删除特定元素的函数│$(this).off()不起作用

时间:2016-06-09 17:06:49

标签: javascript jquery

我将点击事件绑定到.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功能

2 个答案:

答案 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()而不是类,或者您可以添加:而不是逻辑到事件委托选择器。