Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.01.2012, 13:15
Новичок на форуме
Отправить личное сообщение для EVGENi Посмотреть профиль Найти все сообщения от EVGENi
 
Регистрация: 21.01.2012
Сообщений: 3

Задача оптимизации кода по обработке кликов
Здравствуйте.
Существуют блоки с идентификаторами 1,2,3,...,60,
<div class='matrix-cell' id='1'></div>
<div class='matrix-cell' id='2'>...</div>
<div class='matrix-cell' id='3'>...</div>
...
<div class='matrix-cell' id='60'>...</div>

,при клике не которые выполняется функция по показу дополнительных блоков информации тех товаров, по блокам которых был осуществлен клик.
<div class='product' id='div1'>...</div>
<div class='product' id='div2'>...</div>
<div class='product' id='div3'>...</div>
...
<div class='product' id='div60'>...</div>

Как видно из кода, таких блоков товаров ни много ни мало 60 штук и у меня получилось написать обработку кликов только для каждого из 60 блоков.
$('#1.matrix-cell').click(function() {
        prod(1);
})
$('#2.matrix-cell').click(function() {
    prod(2);       
})
$('#3.matrix-cell').click(function() {
    prod(3);       
})

function prod (p) {
    $('#div'+p+'.product').fadeIn(timeprod);
}

Можно ли оптимизировать jQury-код, чтобы сделать обработку кликов для всех блоков одним действием?
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2012, 13:40
Аспирант
Отправить личное сообщение для Arkinsstoun Посмотреть профиль Найти все сообщения от Arkinsstoun
 
Регистрация: 04.01.2012
Сообщений: 40

канешно можно! удаляй у всех клики и делай выборку по ихнему классу! и делигируй событие!

тоесть! делаем выборку:
var $matrix = $(".matrix-cell");


теперь делигируем собитие
$matrix.bind("click",function(){});
Ответить с цитированием
  #3 (permalink)  
Старый 21.01.2012, 14:07
Новичок на форуме
Отправить личное сообщение для EVGENi Посмотреть профиль Найти все сообщения от EVGENi
 
Регистрация: 21.01.2012
Сообщений: 3

То есть, эта функция покажет то, по чему мы кликнули? Так зачем это делать, ведь мы не можем кликнуть по тому, чего нет.
Ответить с цитированием
  #4 (permalink)  
Старый 21.01.2012, 14:29
Новичок на форуме
Отправить личное сообщение для EVGENi Посмотреть профиль Найти все сообщения от EVGENi
 
Регистрация: 21.01.2012
Сообщений: 3

Я правда не понимаю, что не так с версткой (уж простите, пожалуйста). И насчет кода тоже не получается. Что нужно сделать с помощью find()?
$(".matrix-cell").click(function () {
    $(this).find('ЧТО ИМЕННО?').fadeIn(200);
})
Ответить с цитированием
  #5 (permalink)  
Старый 21.01.2012, 16:55
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

я сделегировал на body.

$('body').on("click", '.matrix-cell', function(){
     $("#div"+this.id+".product").fadeIn(timeprod);
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск