【发布时间】:2012-10-19 03:38:06
【问题描述】:
$(document).on('click', '#slider_icons_wrapper.play', function(event) {
var slider_icons_wrapper = $('#slider_icons_wrapper');
slider_icons_wrapper.attr('class', 'pause');
autoSlider(cur_img_div_pos);
showButton('play_icon');
console.log('play');
});
$(document).on('click', '#slider_icons_wrapper.pause', function(event) {
var slider_icons_wrapper = $('#slider_icons_wrapper');
slider_icons_wrapper.attr('class', 'play');
clearInterval(inter);
showButton('pause_icon');
console.log('pause');
});
此代码在第一次加载文档时运行良好。 当用户通过ajax调用导航到另一个页面(文档不刷新),并返回到包含#slider_icons_wrapper div的页面时,当用户单击该div时,该函数会执行两次。如果用户再次导航并返回,则函数执行 3 次,以此类推!
我做错了什么?
编辑#1
当用户导航到另一个页面时,元素 #slider_icons_wrapper 将从 DOM 中删除。当它通过 ajax 调用注入回来时,click 事件每次都会触发更多时间。当用户离开此页面时,我试图解除点击事件的绑定,但同样的事情发生了
【问题讨论】:
-
看起来有选择器冲突。我会将 html 中的 ID 更改为
#slider_icons_wrapper_play和#slider_icons_wrapper_pause。 -
我想选择一个 id="slider_icons_wrapper" 和 class="play" 或 "pause" 的 div