有没有办法在使用live()时强制事件只在给定元素(每个元素,而不是整个文档)上触发一次?

时间:2011-06-01 12:35:46

标签: javascript jquery

$('div.myclass').live('click',function() {
    alert('i should respond only once');
});

我知道jquery有一个one()函数,但我无法想象如何将它与上面的代码集成。

2 个答案:

答案 0 :(得分:5)

$('div.myclass').live('click',function() {
   if($(this).attr('clicked') != 'yes')
   {
    alert('i should respond only once');
    $(this).attr('clicked', 'yes');
   }

});

答案 1 :(得分:1)

live()点击处理程序中,您可以bind()直接在调用e.stopPropagation()的元素上发生事件。因此,在下一次点击时,该事件将无法冒泡到文档,它实际上会触发实时事件。

演示:http://jsfiddle.net/kKHJm/

$('li').live('click',function(){
    $(this).click(function(e){
        e.stopPropagation();
    });

    // Do stuff once here
});