我遇到了一个问题,就是在通过另一个操作创建的项目上绑定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事件或函数动态创建的元素上正确附加事件。