定义一个类's .click - Before元素有这个类

Defining a class's .click - Before element has the class

本文关键字:click Before 元素 一个 定义      更新时间:2023-09-26

我有以下代码:

$('.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");
});

第一部分运行良好。
班级变了,我觉得没有问题。虽然。当我第二次点击它的时候。类更改后。
没有反应。"Debug 1"没有弹出,在firebug中没有控制台错误。没有。

当你动态添加类时,事件应该被委派,否则在页面加载时没有.fam.accept classNames元素,jQuery无法找到/选择该元素

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

注意,事件绑定到元素而不是它们的类名,所以即使删除了page_edit className,也会执行第一个click处理程序。如果你只想改变类名,你可以使用 .toggleClass() 方法代替。

$('.fam.page_edit').click(function(event){
    event.preventDefault();
    $(this).toggleClass('page_edit accept');
    // ...
});

事件处理程序不附加到任何元素,因为在执行时没有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");
});