所以说我有以下代码:
<html>
<div class = "one">one</div>
<div class = "two">two</div>
</html>
<script>
$(".one").click(function() {
$(this).removeClass("one").addClass("two");
console.log("one");
})
$(".two").click(function() {
console.log("two");
})
</script>
在第一次单击时,选择器不再有效(因为类现在是两个而不是一个)。但是事件仍然绑定到此元素。这个元素也不会触发&#34; .two&#34;处理程序,因为它已被绑定。
使用初始点击取消绑定处理程序然后重新绑定的最简单方法是什么?
答案 0 :(得分:2)
将事件绑定在document
上,无需取消绑定并重新绑定事件。
$(document).on("click", ".one", function() {
$(this).removeClass("one").addClass("two");
console.log("one");
});
$(document).on("click", ".two", function() {
console.log("two");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="one">one</div>
<div class="two">two</div>
答案 1 :(得分:1)
$(".one").unbind("click");
$(".one").bind("click", fn);
您可以使用unbind()
删除使用bind()
添加的事件(或如上所述绑定)
https://jsfiddle.net/7yn7apte/ 无重新绑定
https://jsfiddle.net/7yn7apte/1/ 重新绑定
嗯,这回答了你的问题。但是,您最好使用on()
和off()
作为bind()
来电on()
和unbind()
来电off()
。