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

如果上面的代码多次执行会发生什么?id 为 #msgwindow 的元素是否被完全或部分覆盖?它是先销毁然后重新创建的吗?是否有前一个实例留下的痕迹?任何事件侦听器会发生什么?

4

2 回答 2

1

该元素不会被过度使用。简单地说,将在 DOM 中创建另一个具有相同 ID 的元素。

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

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

于 2013-02-20T13:41:38.733 回答
1

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

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

于 2013-02-20T13:40:29.987 回答