这部分代码是question的答案。
$(document.body).on('change', 'select[name^="income_type_"]', function() {
alert($(this).val());
});
我有两个问题,第一个是。 是否存在选择'document.body'而不是选择select的父元素的性能问题? 这样的事情。
第二个问题是。 当放置父元素而不是document.body时,它将像'$。live()'一样运行?
$("#IdOfParentHere").on('change', 'select[name^="income_type_"]', function() {
alert($(this).val());
});
谢谢!
答案 0 :(得分:0)
是否存在选择'document.body'而不是选择select?的父元素的性能问题?
没有。性能没有显着差异。当然,如果你把它放在DOM上,它会更快一点,但我们谈论的是一个无法估量的小差异。
第二个问题是。在放置Parent元素而不是document.body?
时,它的功能类似于'$ .live()'
$.live
与$("body").on("click", "selector",
答案 1 :(得分:0)
将事件处理程序附加到body而不是父元素时,可能会对性能产生影响(但不是很重要)。
假设您尝试委派click事件,您真正想要的是处理静态ul元素中动态创建的li
元素。在事件委托中,当附加元素内发生事件时,将针对委托选择器评估事件目标以查看是否触发处理程序。在这种情况下,如果事件附加到ul
,则必须测试ul内部的事件,但如果hanlder附加到body,则必须测试页面中的所有点击。
l ive()方法将处理程序附加到文档对象,所以是的,它将与此类似。
此方法提供了一种将委托事件处理程序附加到的方法 页面的文档元素,简化了事件处理程序的使用 将内容动态添加到页面时。