如何在jQuery中删除“this”对象上的click事件

时间:2013-07-02 06:29:53

标签: jquery jquery-click-event

我的DOM结构如下,

<a id='c_1' class='like'>Like</a>
<a id='c_2' class='like'>Like</a>
<a id='c_3' class='like'>Like</a>
......

绑定click事件如下,

$(document).on("click",".like",function(){
      var selector = $(this);
      saveLikes(selector);       
});

saveLikes(selector)Ajax success来电Ajax之后拨打click我希望删除/取消绑定当前点击的元素上的success事件在$(document).off("click",selector); 回调中编写了以下代码。

click

它不起作用,我可以通过$(document).off("click",".like");删除{{1}}事件,但我不希望这样,因为对其他元素的进一步点击不会触发事件。

他们的任何解决方案是否只删除当前元素上的事件而不更改类名?

5 个答案:

答案 0 :(得分:2)

在这种情况下你

$(document).on("click",".like",function(){
    var selector = $(this);
    if(selector.data('liked')){
        return;
    }

    saveLikes(selector);     
    selector.data('liked', true)
});

或者

$(document).on("click",".like:not(.liked)",function(){
    var selector = $(this).addClass('liked');
    saveLikes(selector);     
});

答案 1 :(得分:1)

这一个......

$('#foo').unbind('click', function() {
    alert('The quick brown fox jumps over the lazy dog.');
});

REFERENCE: .unbind()

答案 2 :(得分:1)

也许这会有所帮助

$( "#foo" ).one( "click", function(){
    alert( "This will be displayed only once.");
});

Click事件仅对该特定ID执行一次,并自动解除绑定。

参考.one()

答案 3 :(得分:0)

更新了代码

$(".like").click(function() {
    var selector = $(this);
    saveLikes(selector);
    selector.off('click');       // <- Put this in Ajax success
});

答案 4 :(得分:0)

如果您想add click event once,那么您可以使用one()

$('.like').one("click",function(){
      var selector = $(this);
      saveLikes(selector);       
});