#javascript #jquery
#javascript #jquery
Вопрос:
$('div.myclass').live('click',function() {
alert('i should respond only once');
});
Я знаю, что в jquery есть one()
функция, но я не могу понять, как интегрировать это с приведенным выше кодом.
Комментарии:
1. Это один раз для каждого элемента или один раз для всего документа?
2. Было бы лучше иметь короткий значимый заголовок и задать вопрос, к которому он относится 😉
Ответ №1:
$('div.myclass').live('click',function() {
if($(this).attr('clicked') != 'yes')
{
alert('i should respond only once');
$(this).attr('clicked', 'yes');
}
});
Комментарии:
1. 1 Хотя это было бы намного лучше, если бы вы сделали
$(this).data('clicked', true)
иif ($(this).data('clicked')) {
, а не использовали произвольные текстовые атрибуты.
Ответ №2:
В live()
обработчике щелчков вы можете bind()
вызвать событие непосредственно для элемента, который вызывает e.stopPropagation()
. Таким образом, при следующем нажатии событие не сможет перейти к документу, где оно фактически запускает событие live.
Демонстрация: http://jsfiddle.net/kKHJm /
$('li').live('click',function(){
$(this).click(function(e){
e.stopPropagation();
});
// Do stuff once here
});