javascript没有';不要在新身份证上开火

javascript没有';不要在新身份证上开火,javascript,jquery,html,Javascript,Jquery,Html,我是新来的,我正试图为自己编写一个小工具,但我遇到了一个问题。我已经找过了,但找不到合适的解决办法。我甚至知道是什么问题,但我不知道如何解决它 我有一个,它会导致在单击时重命名另一个的id。但在此之后,带有新id的无法到达或触发任何事件 下面是我的问题的代码示例 html: <div id="example1">click me</div> <div id="example2">click me, too.</div> $('#example1'

我是新来的,我正试图为自己编写一个小工具,但我遇到了一个问题。我已经找过了,但找不到合适的解决办法。我甚至知道是什么问题,但我不知道如何解决它

我有一个
,它会导致在单击时重命名另一个
id
。但在此之后,带有新
id的
无法到达或触发任何事件

下面是我的问题的代码示例

html:

<div id="example1">click me</div>
<div id="example2">click me, too.</div>
$('#example1').click(function () {
  $('#example2').attr('id', 'exampleX');
  console.log("done X");
});


$('#exampleX').click(function () {
  $('this').attr('id', 'example2');
  console.log("undone X");
});
第一个click事件工作正常,但第二个没有响应,我想这是因为DOM已经加载,并且不知道新的

我怎样才能修好它

非常感谢您的帮助。 谢谢


编辑:我必须更改
id
,因为我构建了一个小工具或游戏来更改
,并且必须将一些信息存储在val中,因为我不能在单击时触发任何事件。必须更改id才能知道哪些信息需要存储在
var

中。您可以更改Jquery代码。将元素id更改为
#exampleX
后,绑定用于单击
#exampleX
的函数

var click_function = function(){
   $('this').attr('id', 'example2');
   console.log("undone X");
};

$('#example1').on("click", function(){
    $('#example2').attr('id', 'exampleX');
    console.log("done X");

    $('#exampleX').off("click").on("click",click_function);
});
这就是你想要的。


更改元素的ID不是干净的编码。我认为有更好的方法来实现你想要的,但这回答了你的问题。

加载页面时,顶级
$('example1')
$('exampleX')
运行<代码>$('#exampleX')
以静默方式失败(因为缺少元素时JQuery不会抛出错误)。如果要在更改元素的ID后运行
$('#exampleX')
,则应将该代码添加到
#example1
的单击处理程序中。好的,让我们在此处进行备份,为什么要更改元素的ID?在将事件句柄的ID更改为
#example2
后,应该重新连接事件句柄,因为在解析脚本时,它不存在@Halcyon问了一个很好的问题:为什么要更改
id
?我们可以建议你做些别的事情来达到你的目的。我投票决定把这个问题作为离题题来结束,除非它被编辑。这对于将来的其他读者来说肯定是无用的是无用的,因为它没有绑定。并且被弃用。。。最好使用
.on()
.off()
。谢谢你的建议。我改变了我的解决方案。现在可以了吗?关上。。。再次强调,
.off(“click”)
是无用的,因为没有附加到
\exampleX
的处理程序。是的,但是如果您在
\example1
上多次单击,我会将处理程序多次附加到
\exampleX
。它只在第一次单击
#示例1
时无效。我说的不对吗?谢谢,露伊斯,不,我很感激你的建议。但我肯定问错了我的问题。我试着像我的问题中写的那样,在几个级别上工作,比如一个自我构建的比赛树。但是为了知道改变身份证是个坏主意,我尝试了其他方法来解决我的问题。