我遇到了on()
的问题。这是我的代码:
<span class="add" id="id_foo" >add this stuff</span>
$(".add").on('click', function() {
$.post("/toto.com/add.php", { trainning: this.id }, function() {});
$(this).html("Remove this stuff");
$(this).removeClass("add").addClass("remove");
//alert($(this).attr("class"));-->give the good class
});
$(".remove").on('click', function() {
//doesn't work
$.post("/toto.com/remove.php", { trainning: this.id }, function() {});
$(this).html("add this stuff");
$(this).removeClass("remove").addClass("add");
});
类remove
的选择器无法识别它,而当我单击带有add
类的按钮时,类正在改变。你知道问题是什么吗?
感谢您的帮助!
答案 0 :(得分:5)
您需要使用委托事件处理程序,因为您正在动态更改处理程序所附加的类。试试这个:
$(document).on('click', ".add", function() {
$.post("/toto.com/add.php", { trainning: this.id });
$(this).html("Remove this stuff").toggleClass("add remove");
});
$(document).on('click', ".remove", function() {
$.post("/toto.com/remove.php", { trainning: this.id });
$(this).html("add this stuff").toggleClass("remove add");
});
根据此代码所在的script
标记的位置,您可能还需要将代码包装在document.ready处理程序中。如果它位于</body>
标记之前,它可以正常工作,如果它在头部,则将其置于$(function() { /* your code here */ });