【发布时间】:2023-02-22 16:40:18
【问题描述】:
我有一个按钮 Edit,单击它会将所有按钮的类从 btn 更改为 btnDel。
因此,在点击Edit 之后,我预计会触发$('.btnDel').on('click', function() {...}。
但是 $('.btn').on('click', function() {...} 仍然被触发。
我错过了什么?
$('.btnEdit').on('click', function() {
console.log("btnEdit was clicked");
$(".btn").removeClass("btn").addClass("btnDel");
});
$('.btn').on('click', function() {
console.log("btn was clicked");
});
$('.btnDel').on('click', function() {
console.log("btnDel was clicked");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="btnEdit">Edit</button>
<br/><br/>
<button class="btn">1</button>
<button class="btn">2</button>
<button class="btn">3</button>
【问题讨论】:
-
它通过引用更改它,因此它仍然会触发。您需要在更改后绑定按钮..(还记得取消绑定以防止内存泄漏)
-
尽管更好的解决方案是不更改其类更改,而是为点击捕获更高的气泡并检测类,或者在回调中使用 if 条件来检测它
标签: jquery