jQuery动态插入的divSpecialSelected元素选择器绑定事件失效如何解决
解决方案
你的推测完全正确,直接使用$("divSpecialSelected").on()绑定事件仅会作用于页面初始加载完成时就已存在的DOM节点,后续动态插入的元素不会被匹配到,需要使用事件委托机制,将事件绑定到页面初始就存在的父级容器上,再通过选择器匹配目标子元素触发回调。
你当前是将动态元素插入到#blocArray容器内,直接修改绑定代码如下即可生效:
// 父容器选择器.on(事件名, 目标子元素选择器, 回调函数) $("#blocArray").on('click', 'divSpecialSelected', function () { console.log("aaa"); document.getElementById(this.id).addEventListener('mousedown', mouseDown, false); localStorage.setItem('id', this.id); window.addEventListener('mouseup', mouseUp, false); });
优化建议
你当前的写法每次点击元素都会重复绑定mousedown和mouseup事件,多次点击会导致同一事件触发多次回调,建议直接将mousedown也做委托绑定,避免重复绑定问题:
// 委托绑定mousedown事件,无需点击后再绑定 $("#blocArray").on('mousedown', 'divSpecialSelected', function (e) { mouseDown.call(this, e); localStorage.setItem('id', this.id); }); // mouseup全局绑定一次即可 window.addEventListener('mouseup', mouseUp, false);
内容的提问来源于stack exchange,提问作者Heimdall
相关产品推荐
相关产品推荐

