jQuery使用ID动态创建元素:如果元素已经存在会发生什么?

时间:2013-02-20 13:27:29

标签: jquery

    var myWindow = $("<div id='msgwindow'/>").someWidget({
      option1: true,
      option2: someVariableWhoseValueChanges
     });

如果上述代码多次执行会怎样? id为#msgwindow的元素是否被完全或部分覆盖?它首先被破坏然后重新创建吗?从前一个例子中是否有任何遗迹?任何事件监听器会发生什么?

2 个答案:

答案 0 :(得分:1)

您问题中的代码不会将someWidget()应用于现有元素。它会创建一个新的<div>元素并将该窗口小部件应用于该新元素(这可能会也可能不会导致将该元素附加到页面的<body>,具体取决于窗口小部件。)

因此,多次运行此代码将导致创建多个元素并可能添加到DOM中。由于所有这些元素将共享相同的id属性,这将使您的文档无效。

答案 1 :(得分:1)

元素不会被覆盖。简单地说,将在DOM中创建具有相同ID的另一个元素。

据我所知,事件监听器(例如$("body").on("click", "#msgWindow"仅触发与DOM中该ID匹配的元素的第一个实例

你不应该在文档中真正拥有多个ID,这是不好的做法,考虑使用类。