Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery:更改div';她有两次不工作_Jquery_Html_Click - Fatal编程技术网

jQuery:更改div';她有两次不工作

jQuery:更改div';她有两次不工作,jquery,html,click,Jquery,Html,Click,我一直在尝试在用户单击div时切换其id。 第一次单击有效,它会更改div的id,但再次按下时不会再次更改div的id $("#hello").click(function(){ $(this).attr("id","bye").text("bye"); }); $("#bye").click(function(){ $(this).attr("id","hello").text("hello"); }); <div id="hello">hello</di

我一直在尝试在用户单击div时切换其id。 第一次单击有效,它会更改div的id,但再次按下时不会再次更改div的id

$("#hello").click(function(){
    $(this).attr("id","bye").text("bye");
});

$("#bye").click(function(){
    $(this).attr("id","hello").text("hello");
});

<div id="hello">hello</div>
$(“#你好”)。单击(函数(){
$(this.attr(“id”,“bye”).text(“bye”);
});
$(“#再见”)。单击(函数(){
$(this.attr(“id”,“hello”).text(“hello”);
});
你好

您知道如何使其工作吗?

当文档加载时,处理程序被分配给元素,因此没有处理程序被分配给
bye
,因为没有元素

您可以使用(注意,如果有某个祖先可以应用它,则更好):

示例:

或者只需使用
hello
将处理程序分配给元素,并使用相同的处理程序切换ID

示例:


当文档加载时,处理程序被分配给元素,因此没有处理程序被分配给
bye
,因为没有元素

您可以使用(注意,如果有某个祖先可以应用它,则更好):

示例:

或者只需使用
hello
将处理程序分配给元素,并使用相同的处理程序切换ID

示例:


它不起作用,因为在DOM中将div的id设置为“bye”之前,已绑定“bye”的单击事件处理程序。您可以使用以下方法绕过此问题:

$("#hello").live('click', function(){
    $(this).attr("id","bye").text("bye");
});

$("#bye").live('click', function(){
    $(this).attr("id","hello").text("hello");
});

它不起作用,因为在DOM中将div的id设置为“bye”之前,已绑定“bye”的单击事件处理程序。您可以使用以下方法绕过此问题:

$("#hello").live('click', function(){
    $(this).attr("id","bye").text("bye");
});

$("#bye").live('click', function(){
    $(this).attr("id","hello").text("hello");
});

到目前为止,我更喜欢第二种解决方案。更简单的代码,更少的客户端浏览器工作,并正确链接这两个操作。到目前为止,我更喜欢第二个解决方案。代码更简单,客户端浏览器的工作量更少,并且可以正确链接这两个操作。
$("#hello").live('click', function(){
    $(this).attr("id","bye").text("bye");
});

$("#bye").live('click', function(){
    $(this).attr("id","hello").text("hello");
});