[英]jQuery clone is not working when draggable elements create cloned copy
[英]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.
事件委派速度稍慢一些,但占用的内存却少得多。 并且它被认为是更清洁的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.