javascript - jQuery 不执行具有新 id 的新元素的代码

标签 javascript jquery html

我有一个图像,当我单击它时,我希望它更改为不同的图像并更改其 ID。然后,当我单击这个新图像时,它会恢复原状。

$(document).ready(function(){
    $("#name_edit").click(function(){
        $(this).attr("src", "img/tick.png");
        $(this).attr("id","name_confirm");
    });
    $("#name_confirm").click(function(){
        $(this).attr("src", "img/edit.png");
        $(this).attr("id","name_edit");
    });
});

我已经成功完成了第一步,从#name_edit到#name_confirm。然而,事实并非如此。

我该如何解决这个问题?

我怀疑,由于我正在使用 (document).ready,jQuery 正在为页面上已有的元素做好准备。但是,在单击图像之前,ID 为 name_confirm 的元素并不存在。

谢谢。

最佳答案

您正在处理的元素始终相同...

$(document).ready(function(){

    // use just the first id value to find it in the DOM
    $("#name_edit").click(function(){
      var item = $(this);
      var id = item.attr('id');
      
      if(id === 'name_edit') {
        return item
          .attr("src", "img/tick.png")
          .attr("id","name_confirm")
        ;
      }
    
      
      return item
        .attr("src", "img/edit.png")
        .attr("id","name_edit")
      ;
    })
    ;
});

关于javascript - jQuery 不执行具有新 id 的新元素的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36515386/

相关文章:

javascript - 在 2 个多选之间拖放

javascript - 什么时候编译 JavaScript 正则表达式文字

javascript - 用于向上或向下重定向级别的按钮/链接

javascript - 使用 Javascript 按名称将多个元素添加到 JSON 对象

javascript - $watch 仅在第一次更新 window.innerWidth 时触发

javascript - 使用 jQuery 在 $each 中获取输入的值

javascript - Jquery Slider 从第二张幻灯片开始

jquery - 动态生成文本框的按键事件

java - 在 Web 应用程序中显示 Excel 工作表 - Java EE

jquery - 如何确保 Accordion 选项卡始终打开但一次只打开一个