var myWindow = $("<div id='msgwindow'/>").someWidget({
option1: true,
option2: someVariableWhoseValueChanges
});
如果上述代码多次执行会怎样? id为#msgwindow的元素是否被完全或部分覆盖?它首先被破坏然后重新创建吗?从前一个例子中是否有任何遗迹?任何事件监听器会发生什么?
答案 0 :(得分:1)
您问题中的代码不会将someWidget()
应用于现有元素。它会创建一个新的<div>
元素并将该窗口小部件应用于该新元素(这可能会也可能不会导致将该元素附加到页面的<body>
,具体取决于窗口小部件。)
因此,多次运行此代码将导致创建多个元素并可能添加到DOM中。由于所有这些元素将共享相同的id
属性,这将使您的文档无效。
答案 1 :(得分:1)
元素不会被覆盖。简单地说,将在DOM中创建具有相同ID的另一个元素。
据我所知,事件监听器(例如$("body").on("click", "#msgWindow"
将仅触发与DOM中该ID匹配的元素的第一个实例。
你不应该在文档中真正拥有多个ID,这是不好的做法,考虑使用类。