如何在jQuery插件中绑定此事件处理程序?

悉达思(Siddharth)

我正在学习JavaScript和jQuery,因此如果这是一个愚蠢的问题,我会提前道歉。

(function ($) {
  $.fn.addDiv = function () {
    this.append('<div></div>');
    return this;
  };
}(jQuery));

$('div').click(function () {
  $('body').addDiv();
});

在上面的代码中,我编写了一个简单的jQuery插件,该插件将一个<div>元素添加到的当前值this

现在,在单击一个元素并添加了一些<div>元素之后,我意识到单击处理程序与新添加的元素无关。这似乎是完全可以接受的,因为自然而然地,当绑定处理程序函数时,它只存在于$('div')对象中并因此存在于对象中。

现在,我知道将处理程序绑定到<div>插件中的所有元素非常简单。

(function ($) {
  $.fn.addDiv = function () {
    this.append('<div></div>');
    $('div').click(function () {
      $('body').addDiv();
    }); // added this statement
    return this;
  };
}(jQuery));

但是我敢肯定,有一种更好的方法来处理这种事件绑定。这显然重复了代码。那么,与事件本身绑定到插件本身添加的元素的最佳实践是什么?

这仅是一个教育示例,请不要将其视为任何用例,而请给我其他解决方案。

http://jsbin.com/jokururiyaca/1/edit

编辑:我知道有人建议使用.selectorjQuery 但在jQuery 2中已弃用。此外,使用它不会更改事件处理代码仍在插件内重复的事实。

亚历山大·奥玛拉

这是您可以解决将点击处理程序重新绑定到所有元素的问题的一种方法。

您可以使用创建DOM元素,使用$('<div></div>')将点击处理程序添加到该元素中,$('<div></div>').click(...)然后使用将其添加到正文中$('<div></div>').click(...).appendTo("body")

例子:

(function ($) {
  $.fn.addDiv = function () {
    $('<div></div>').click(function () {
      $('body').addDiv();
    }).appendTo("body");
    return this;
  };
}(jQuery));

通常,事件委托将用于处理有关将来元素的事件。

例子:

(function ($) {
  $.fn.addDiv = function () {
    this.append('<div></div>');
    return this;
  };
}(jQuery));

$(document).on("click", "div", function(){
  $('body').addDiv();
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何避免此事件处理程序中的重复代码?

来自分类Dev

如何使此事件处理程序更灵活

来自分类Dev

如何在Telerik MVC ClientTemplate中绑定事件处理程序?

来自分类Dev

有没有办法重新绑定jQuery插件中引用的事件处理程序?

来自分类Dev

如何在 jquery 中动态创建事件处理程序

来自分类Dev

ReactJS:如何在没有绑定的事件处理程序中访问模型?

来自分类Dev

如何在React中的事件处理程序之外执行绑定函数?

来自分类Dev

如何使用jQuery中的循环自动绑定多个事件处理程序

来自分类Dev

如何从 OctoberCMS 插件中的事件处理程序重定向?

来自分类Dev

jQuery .on()不绑定事件处理程序

来自分类Dev

删除绑定到处理程序的jQuery事件

来自分类Dev

删除绑定到处理程序的jQuery事件

来自分类Dev

AngularJS / jQuery-如何在jQuery事件处理程序中附加$ scope对象的某些属性

来自分类Dev

如何在事件处理程序中获取事件名称

来自分类Dev

在构造函数中绑定函数时,如何在ES6 React中向事件处理程序添加参数

来自分类Dev

如何在Angular应用中绑定Graphicsmetrics jQuery插件

来自分类Dev

在PyQT中绑定事件处理程序

来自分类Dev

此事件处理程序有什么问题?

来自分类Dev

如何在jQuery事件处理程序中存储和重用超时?

来自分类Dev

如何从处理此事件的方法中将单击的按钮的 ID 检索到 SharePoint 2013 Web 部件中?

来自分类Dev

如何在jQuery悬停事件处理程序中使用$(this)?

来自分类Dev

如何在jQuery插件事件中修改ReactiveVar?

来自分类Dev

jQuery:绑定事件-在$(document).ready或html DOM事件处理程序中?

来自分类Dev

如何在mouseover事件处理程序中创建click事件处理程序?

来自分类Dev

我应该如何重组此事件处理代码?

来自分类Dev

如何在lambda方法中解开lambda事件处理程序?

来自分类Dev

如何在React子组件中设置事件处理程序

来自分类Dev

如何在MVC中为DropDownList添加事件处理程序

来自分类Dev

如何在Angular 2事件处理程序中访问“ this”?

Related 相关文章

  1. 1

    如何避免此事件处理程序中的重复代码?

  2. 2

    如何使此事件处理程序更灵活

  3. 3

    如何在Telerik MVC ClientTemplate中绑定事件处理程序?

  4. 4

    有没有办法重新绑定jQuery插件中引用的事件处理程序?

  5. 5

    如何在 jquery 中动态创建事件处理程序

  6. 6

    ReactJS:如何在没有绑定的事件处理程序中访问模型?

  7. 7

    如何在React中的事件处理程序之外执行绑定函数?

  8. 8

    如何使用jQuery中的循环自动绑定多个事件处理程序

  9. 9

    如何从 OctoberCMS 插件中的事件处理程序重定向?

  10. 10

    jQuery .on()不绑定事件处理程序

  11. 11

    删除绑定到处理程序的jQuery事件

  12. 12

    删除绑定到处理程序的jQuery事件

  13. 13

    AngularJS / jQuery-如何在jQuery事件处理程序中附加$ scope对象的某些属性

  14. 14

    如何在事件处理程序中获取事件名称

  15. 15

    在构造函数中绑定函数时,如何在ES6 React中向事件处理程序添加参数

  16. 16

    如何在Angular应用中绑定Graphicsmetrics jQuery插件

  17. 17

    在PyQT中绑定事件处理程序

  18. 18

    此事件处理程序有什么问题?

  19. 19

    如何在jQuery事件处理程序中存储和重用超时?

  20. 20

    如何从处理此事件的方法中将单击的按钮的 ID 检索到 SharePoint 2013 Web 部件中?

  21. 21

    如何在jQuery悬停事件处理程序中使用$(this)?

  22. 22

    如何在jQuery插件事件中修改ReactiveVar?

  23. 23

    jQuery:绑定事件-在$(document).ready或html DOM事件处理程序中?

  24. 24

    如何在mouseover事件处理程序中创建click事件处理程序?

  25. 25

    我应该如何重组此事件处理代码?

  26. 26

    如何在lambda方法中解开lambda事件处理程序?

  27. 27

    如何在React子组件中设置事件处理程序

  28. 28

    如何在MVC中为DropDownList添加事件处理程序

  29. 29

    如何在Angular 2事件处理程序中访问“ this”?

热门标签

归档