1

我有以下代码:

$('.fam.page_edit').click(function(event){
    event.preventDefault();
    $(this).removeClass('page_edit').addClass("accept");
    $(this).parent().parent().removeClass("ikkeskrevet").addClass("kaldt");
});

$('.fam.accept').click(function(event){
    event.preventDefault();
    $(this).removeClass('accept').addClass("add");
    alert("Debug 1.");
    $(this).parent().parent().removeClass("kaldt").addClass("skrevet");

});

第一部分工作正常。
课程发生了变化,我认为那里没有问题。虽然。当我试图点击它时,第二次。换班后。
没有反应。“调试 1”没有弹出,萤火虫中没有控制台错误。没有。

4

2 回答 2

4

当您动态添加类时,应该委托事件,否则由于.fam.accept页面加载时没有带有类名的元素,jQuery 无法找到/选择该元素。

$(document).on('click', '.fam.accept', function(event){
   // ...
});

请注意,事件绑定到元素而不是它们的类名,因此即使您删除了类名,也会执行第一个单击处理程序page_edit。如果您只更改类名,则可以使用.toggleClass()方法代替。

$('.fam.page_edit').click(function(event){
    event.preventDefault();
    $(this).toggleClass('page_edit accept');
    // ...
});
于 2013-05-19T22:11:19.783 回答
2

事件处理程序不附加到任何元素,因为在执行时没有带有 class 的元素accept。尝试在第一次单击事件后调用此单击函数。

$('.fam.page_edit').click(function(event){
    event.preventDefault();
    $(this).removeClass('page_edit').addClass("accept");
    $('.fam.accept').click(function(event){
        event.preventDefault();
        $(this).removeClass('accept').addClass("add");
        alert("Debug 1.");
        $(this).parent().parent().removeClass("kaldt").addClass("skrevet");
    });
    $(this).parent().parent().removeClass("ikkeskrevet").addClass("kaldt");
});
于 2013-05-19T22:11:25.980 回答