应该在附加克隆元素时使用clone(true),还是使用on()和clone(false)
Should clone(true) be used when appending cloned elements, or on() with clone(false)?
当克隆一个元素并将其附加到另一个元素时,是将事件从原始元素中克隆出来更好,还是使用on()使事件不需要被克隆?更好是基于更快,使用更少的内存,以及更正式的方式。请解释为什么一种方法比另一种方法好。谢谢你
不克隆事件的选项1
$('#add').click(function(){$("#list").append($("#clone").clone(false));};
$("#list").on("click", "a", function(){alert('hello');});
克隆事件的选项2
$('#add').click(function(){$("#list").append($("#clone").clone(true));};
$("#clone a").click(function(){alert('hello');});
两个选项通用的HTML
<a href="javascript:void(0)" id="add">Click</a>
<li id="clone"><a href="javascript:void(0)">Click</a></li>
<ul id="list"></ul>
您应该使用事件委托(on
选项);主要的好处是,您不必在附加后附加另一个事件处理程序;只需事先定义事件处理。
主要的好处是你不需要为每个对象附加一个新函数,这意味着消耗的内存更少;相反,事件将冒泡到相同的事件处理函数:
$("#list").on("click", "a", function(){alert('hello');});
// Don't run this after appending; you're already done setting up event handling.
事件委托稍微慢一点,但占用的内存少得多。它被认为是更简洁的方法。
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- window.on.scroll事件未启动
- Socket.io on Mozilla Rhino
- CSS中的游标属性似乎不适用于USB On The Go
- jQuery点击ON现在使用.load触发关闭
- JQuery.on(“keydown”)追加到页面时不工作
- 使用.on动态添加jquery/js不知道的html元素
- angularjs$valid-on-dates在firefox中报告错误
- addEventListener on NodeList
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- jQuery 1.7.2:.on()在一个页面上工作;Don’别再干别的了
- Jquery on单击“显示信息”
- 平均值.on(事件[,选择器][,数据],处理程序)
- 多个jQuery.on()事件无法运行xBrowser(取决于顺序)
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- 无法使以下ng on click outside指令在同一页面上的两个元素上工作
- Javascript mozfullscreenchange on Firefox
- iframe and JavaScript on different pages
- 应该在附加克隆元素时使用clone(true),还是使用on()和clone(false)