在绑定jQuery插件时使用委托目标
Using a delegate target when binding for a jQuery plugin
我正在写一个jQuery插件。当我为这个插件设置init方法时,我想为上下文设置事件,但我不确定是否应该为事件设置委托目标或将事件直接绑定到上下文。
我想要考虑委托的主要原因是使用这个插件动态内容。在某些情况下,可以使用ajax将调用插件的这些元素附加到页面上。在这种情况下,是否有一种方法可以设置事件,使我不必在ajax调用后销毁和重新绑定事件?
此刻,我正在做这样的事情:
$(this).on('click', initEditor);
我应该考虑这样做吗?
$('body').on('click', this, initEditor);
或将委托作为选项存储在选项中的事件,如下所示:
$(options.delegate).on('click', this, initEditor);
谢谢!
如果你只需要绑定子元素,你可以使用:
$("#my_target").on("click", ".my_class_target", handler);
"。On"event"取代了"delegate, bind, live等"。现在,您可以只在一个地方附加所有事件。这是非常好的,因为在此之前,您需要使用"bind",不能与ajax元素一起工作,因为您有"live",这是有限的。
在我的例子中,您只使用"。My_class_target",它位于"#my_target"的内部。因此,如果将开始元素附加在body上,如:"$("body")。("点击"、"。My_class_target ", handle) so all "。My_class_target"将被附加。然后,秘密就在你的"选择器"中。请记住,第一个选择器"$(#my_target")"必须在加载页面时创建,另一个选择器可以通过ajax加载或通过dom创建。
让我们举个例子:
<div id="my_div">
<ul class="ul-1">
<li class="li-1-1"></li>
<li class="li-1-2"></li>
<li class="li-1-3"></li>
<li class="li-1-4">
<ul class="ul-2">
<li class="li-2-1"></li>
</ul>
</li>
</ul>
</div>
js:
my_function = function(){};
$("body").on("click", "li", my_function); //handle all li
$("body").on("click", "ul.ul-1 > li", my_function); //attach only in li-1-X
// if ul-1 is generate with ajax:
$("#my_div").on("click", "li", my_function); // will work with all li
$("ul.ul-1").on("click", "li", my_function); // wont work because the first selector "ul.ul-1" was not generated when the attach was called.
我希望这对你有帮助。
字体:http://api.jquery.com/on/
http://api.jquery.com/category/selectors/- 在VanillaJS中模拟模型双向数据绑定
- 无法通过数组映射绑定
- 主干-不管怎样,检查事件以前是否绑定过
- 用于搜索的聚合物嵌套绑定
- Angular:更新一次性绑定的数据
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- react.js中的密钥绑定
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 将事件处理程序绑定到任何可能的事件
- AngularJS指令只识别双向绑定类型
- Telerik rad组合框多列数据绑定
- 对API数据使用声明性绑定
- 如何销毁/删除/取消绑定SnapSVG.js
- 绑定不同目标的单击和键控以执行相同的功能
- 异步函数作为敲除绑定目标
- 直接从事件处理程序中的目标元素访问敲除绑定值
- jQuery:将 onClick 绑定到指向其他页面的所有锚点,目标=_self
- 如果单击事件冒泡到绑定到同一单击处理程序的元素,我如何隔离单击的初始目标?
- 在绑定jQuery插件时使用委托目标
- 是否可以将google.maps.MVCObject的属性绑定到多个目标