【发布时间】:2012-03-12 18:31:49
【问题描述】:
我在通过另一个操作创建的项目上绑定 jquery 事件时遇到问题,例如当点击加载更多链接时
e.g there are list of elements
<div class="itm" id="c_1"></div>
<div class="itm" id="c_2"></div>
....
当点击加载更多链接时,它将生成更多元素,例如
<div class="itm" id="c_11"></div>
<div class="itm" id="c_12"></div>
...
在页面加载时,我使用下面的 jquery 脚本来绑定鼠标进入和离开事件。
$('.itm').on({
mouseenter: function (e) {
alert('mouse enter');
},
mouseleave: function (e) {
alert('mouse leave');
}
});
这将成功地在元素 c_1、c_2 上应用事件,但是当加载更多链接调用时,它将生成更多元素。为此,我取消绑定悬停事件并在单击加载更多链接时调用的函数下创建新元素后再次绑定它。
$(".cmtldmore").on('click', function (e) {
// Ajax process to load more elements in tray.
// Unbind hover event
$('.itm').off();
// Bind it again
$('.itm').on({
mouseenter: function (e) {
alert('mouse enter');
},
mouseleave: function (e) {
alert('mouse leave');
}
});
});
已经和加载更多元素在页面上正确显示, 但是悬停事件仍然可以正确调用已经创建的元素,而不是“加载更多”事件创建的元素。
谁能帮我正确地将事件附加到通过调用其他 jquery 事件或函数动态创建的元素上。
【问题讨论】:
-
@Madbreaks - 如果关键是要发现它实际上已被弃用,那肯定是个好主意!