javascript - 有什么方法可以在 jQuery 中委托(delegate)事件吗?

标签 javascript jquery events delegates click

我想要delegate事件one对于 click 。有谁知道是否可以做到吗?

最佳答案

我假设您希望事件仅在每个匹配元素上触发一次,而不是在第一次单击时完全取消绑定(bind)。

我会像这样实现它:

$('#container').delegate('.children', 'click', function() {
  if($(this).data('clicked')) {
      return;
  }

  // ... your code here ...


  $(this).data('clicked', true);

});

每个元素只会触发一次。从技术上讲,它每次都会触发,但在第一次单击时会被标记,因此代码不会再次执行。

使用委托(delegate)模拟 .one() 处理程序的固有问题是,使用 .one() 选择器中匹配的每个元素都会绑定(bind)其自己的事件处理程序。因此,当第一次触发它时,它会从该元素中解除绑定(bind)/删除处理程序。您不能使用 .delegate() 执行此操作,因为只有一个处理程序用于所有匹配的元素。

虽然上面的代码完美地模拟了它,但它仍然有点hackish,因为它实际上并没有执行与 .one() 相同的操作(解除绑定(bind)事件处理程序)。

关于javascript - 有什么方法可以在 jQuery 中委托(delegate)事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6873019/

相关文章:

javascript - discord.js 禁用 “interaction failed”

javascript - Jquery UI DatePicker 限制日期集

javascript - jQuery 处理复选框组

c# - WPF 中的拖放

java - 我如何监听此 Java 应用程序何时调整大小?

javascript - 为什么 `var a= function(){}` 在以下情况下与 `function a(){}` 相似?

javascript - 用字母增加一个字符串?

java - 当某些 url 加载时是否可以执行某些操作?

javascript - Angular ng-每周重复一次

javascript - $(document).ready(function(){ ... }); 内的自调用函数