我的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}}事件,但我不希望这样,因为对其他元素的进一步点击不会触发事件。
他们的任何解决方案是否只删除当前元素上的事件而不更改类名?
答案 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.');
});
答案 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);
});