2014-02-14 6 views
0

Проблема заключается в том, что у меня есть страница с 60 элементами, которые точно так же:JQuery нажмите событие срабатывает в 60 раз

<div class="imagetd">...</div> 
<div class="imagetd">...</div> 
.... 
<div class="imagetd">...</div> 
<div class="imagetd">...</div> 

и событие для них:

$('.imagetd').each(function(){ 
    var that = this; 
    $(that).on('click', function(){ 
     console.log('clicked!'); 
    }) 
});   

Я также попытался следующие

$(document).on('click', '.imagetd', function(e){ 
    console.log('clicked!'); 
});  

Когда я нажимаю на любой из этих элементов, событие срабатывает 60 раз. Скажите, пожалуйста, почему? И как это исправить?

+0

Почему у вас '.each'? Также вы можете использовать '$ (this)' сразу –

+0

@ Mr.Alien, но это не проблема? –

+0

Можете ли вы предоставить более подробный контекст относительно того, где у вас есть этот код. –

ответ

0

Вам не нужна каждая функция для применения обработчика событий к нескольким элементам. Это должно работать:

$('.imagetd').on('click', function(e){ 
    console.log('clicked!'); 
}); 
+1

Это то же самое. Внутренне jQuery все еще использует метод 'each'. – dfsq

0

если вы используете each, он работает на основе подсчета элементов, если у вас есть 60 элементов он работает, что много времени.

$(function(){   
    $(document).on('click', '.imagetd', function(e){ 
     console.log('clicked!'); 
     }); 
}); 
0
$('.imagetd').on('click', function(e){ 
    e.preventDefault(); 
    console.log('clicked!'); 
    $(this).die('click'); 
}); 
0

Вот fiddle, он прекрасно работает без

$.each 

Вы можете напрямую связать с набором элементов, без необходимости использования каждого, хотя это не является причиной.

Смежные вопросы