我有以下HTML:
<div id="Content">
<div class="MyDiv">...</div>
<div class="MyDiv">...</div>
</div>
由于ajax调用,MyDiv元素被删除并添加了几次。我使用一个使用.html()函数替换HTML的函数。
当页面加载时,我执行以下功能:
function DynamicHandlers() {
$('#Content .MyDiv').live({
click: function () { .... },
mouseleave: function () { ... }
});
问题是click和mouseleave处理程序在我更改HTML时执行了很多次。我最初的处理程序与HTML的创建有关,每次HTML更新时我都会绑定事件。我认为通过将处理程序移动到使用.live()的函数,我只需要运行一次然后处理程序就会设置好。他们是谁;唯一的问题是它们被多次执行。
我需要做出哪些改变?
感谢。
答案 0 :(得分:0)
将为DOM中与$('#Content .MyDiv')选择器匹配的每个元素调用您的处理程序。我假设在事件被触发时,页面上有多个匹配的元素。
答案 1 :(得分:0)
解决此问题的最简单方法是在.live()之前调用.die()。
这当然不是正确的事情,但它会解决它。