我将点击事件绑定到.call
这样的元素
$('body div').on('click', '.call', function() {
$(this).off('click'); //after click i want to unbind the 'click' for this .call only
//however its not workinng.
*... some code here ....*
})
如果我执行$(body div).off('click', '.call')
,则所有.call
元素都会失去其功能。我不想那样。如何从仅点击click
.call
功能
答案 0 :(得分:0)
您可以考虑使用$().one
http://api.jquery.com/one/
这会将一个回调绑定到一个元素,并在它执行后解除绑定。
答案 1 :(得分:0)
您无法解除元素中的点击,因为事件未附加到该元素。所以你需要通过删除你在事件委托中寻找的类来处理它,或者添加某种逻辑以查看它是否被点击。
如果您可以删除该课程,那将是最简单的解决方案。
$('body div').on('click', '.call', function() {
$(this).removeClass("call");
/* rest of logic */
})
或者你可以添加一个类并检查它
$('body div').on('click', '.call', function() {
var elem = $(this);
if (elem.hasClass("called")) return;
elem.addClass("called");
/* rest of logic */
})
您可以使用data()而不是类,或者您可以添加:而不是逻辑到事件委托选择器。