JavaScript-js 使用事件委托时,如何才能不触发多余的事件。
js 使用事件委托时,如何才能不触发多余的事件。
如下代码:
<ul id="j-comment">
<li>
<div> 代码快 </div>
<div> 代码快 </div>
<a href="javascript:;">回复</a>
</li>
<li>
<div> 代码快 </div>
<div> 代码快 </div>
<a href="javascript:;">回复</a>
</li>
......
</ul>
js代码如下:
function fnAddEvent(obj, sevent, fn) {
if (obj.addEventListener) {
obj.addEventListener(sevent, fn, false);
}
else {
obj.attachEvent("on" + sevent, fn);
}
}
function eventClick(e) {
var ev = e || window.event;
var target = ev.target || ev.srcElement;
while (target.nodeName.toLowerCase() !== "li") {
target = target.parentNode;
}
if (target.nodeName.toLowerCase() === "li") {
alert(target.nodeName);
}
console.log(target.nodeName.toLowerCase());
}
var ul = document.getElementById("j-comment");
fnAddEvent(ul, "click", eventClick);
通过 ul 绑定 click 事件委托,绑定后 li 下的所有标签都会触发 click 事件。
怎么只在 a 标签上触发 click 事件,不在其他元素(div,li等)上触发 click 事件。
$('#j-comment').on('click',"a.j-price-btn",function(){
//do something
});
这样可以解决问题,但是谁能告诉我下原理?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论