on()不识别一个类

时间:2016-03-16 16:24:42

标签: javascript jquery html

我遇到了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类的按钮时,类正在改变。你知道问题是什么吗?

感谢您的帮助!

1 个答案:

答案 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 */ });

之内