假设以下结构
<div id="wrapper">
<div></div>
<div class="selected"></div>
<div></div>
<div></div>
<div class="selected"></div>
</div>
我想为所有 .selected 元素分配一个委托(delegate)事件处理程序,以便在选择新元素时,它们会自动接收该处理程序。
$("div#wrapper").on("click", "div.selected", function() {
//do magic
});
现在,每次选择一个新的 div 时,它都会自动接收处理程序。
但是,如果我取消选择一个div(删除.selected类),它也会自动删除处理程序吗?
最佳答案
正确——你的代码
$("div#wrapper").on("click", "div.selected", function() {
//do magic
});
应理解为:“当 div#wrapper
中发生点击时,如果(且仅当)它位于 div.selected
元素上,则运行此函数”
换句话说,您的事件处理程序实际上绑定(bind)到 div#wrapper
,而不是绑定(bind)到其中的 div.selected
元素。因此,您可以根据需要添加或删除 div.selected
,委托(delegate)处理程序将根据需要自动触发。
关于javascript - jQuery - 当您委托(delegate)事件处理程序时,它是否也会自动从不再匹配的元素中删除自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144329/