Jquery 单击事件激发,尽管类名已更改

Jquery 单击事件激发,尽管类名已更改,jquery,Jquery,我有一个关于jQuery的新手问题。为什么即使元素已更改了类,我也可以触发下面的单击事件?即使我将类从“edit”更改为“tide”,美元(“.edit”).click()仍在处理该元素 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/x

我有一个关于jQuery的新手问题。为什么即使元素已更改了类,我也可以触发下面的单击事件?即使我将类从“edit”更改为“tide”,美元(“.edit”).click()仍在处理该元素

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    <script type="text/javascript" src="jquery-1.4.2.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $(".edit").click(function(){
                console.log(this);
                $(this).removeClass("edit").addClass("tide");
            });
        });
    </script>
</head>

<body>
    <div class="edit">Hi there</div>
</body>
</html>

无标题文件
$(文档).ready(函数(){
$(“.edit”)。单击(函数(){
console.log(this);
$(this.removeClass(“edit”).addClass(“tide”);
});
});
你好

谢谢大家!

单击事件绑定到元素,而不是类。在您的示例中,您是基于
编辑
类选择元素,然后将单击事件附加到这些元素。一旦附加到元素,它将保持附加状态,直到显式删除为止,而不管元素的CSS类将来如何更改


正如Nick Craver所指出的,jQuery的方法可以做您想做的事情。

单击事件绑定到元素,而不是类。在您的示例中,您是基于
编辑
类选择元素,然后将单击事件附加到这些元素。一旦附加到元素,它将保持附加状态,直到显式删除为止,而不管元素的CSS类将来如何更改


正如Nick Craver所指出的,jQuery的方法可能会满足您的需要。

如果您想要这种行为,请使用以下方法:

$(document).ready(function(){
    $(".edit").live('click', function(){
        console.log(this);
        $(this).removeClass("edit").addClass("tide");
    });
});

。现在,
$(“.edit”)
查找与当时的
.edit
选择器匹配的元素并绑定到它们,这些
单击事件处理程序决不依赖于之后的类名。使用选择器时,会在事件发生时进行评估,因此它确实很重要。

如果需要该行为,请使用,如下所示:

$(document).ready(function(){
    $(".edit").live('click', function(){
        console.log(this);
        $(this).removeClass("edit").addClass("tide");
    });
});
。现在,
$(“.edit”)
查找与当时的
.edit
选择器匹配的元素并绑定到它们,这些
单击事件处理程序决不依赖于之后的类名。与选择器一起,选择器在事件发生时进行计算,因此它确实很重要