克隆元素并将其附加到另一个元素时,最好是从原始元素克隆事件,还是使用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>
答案 0 :(得分:0)
您应该使用事件委派(on
选项);主要好处是你不必在追加后附加另一个事件处理程序;只需事先定义事件处理。
主要的好处是你没有为每个对象附加一个新函数,这意味着消耗的内存更少;相反,事件将冒泡到相同的事件处理函数:
$("#list").on("click", "a", function(){alert('hello');});
// Don't run this after appending; you're already done setting up event handling.
答案 1 :(得分:0)
事件委托速度稍微慢一点,但内存却少得多。并且它被认为是更清洁的方法。