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

Что произойдет, если код выше выполняется более одного раза? Является ли элемент с id #msgwindow полностью или частично перезаписан? Уничтожен ли он первым, а затем воссоздан? Есть ли остатки, которые свисают с предыдущего экземпляра? Что происходит с прослушивателями событий?jQuery динамически созданный элемент с идентификатором: что произойдет, если элемент уже существует?

+0

Это должно быть хорошо видно: http://stackoverflow.com/questions/14248361/jquery-draggable-what-happens-if-it-is-applied-twice-to-an-element –

+0

@Christophe Roussy: thank вы за эту ссылку. Интересно, было бы лучше, если предыдущий элемент будет удален из DOM, а не расширен. – Tim

ответ

1

Код в вашем вопросе не применяется someWidget() к существующему элементу. Он создает новый элемент <div> и применяет виджет к этому новому элементу (который может или не может привести к добавлению элемента к <body> страницы в зависимости от виджета).

Следовательно, при запуске этого кода несколько раз создадут несколько элементов, которые будут созданы и потенциально добавлены в DOM. Поскольку все эти элементы будут иметь один и тот же атрибут id, это сделает ваш документ недействительным.

1

Элемент не может быть переписан. Просто в DOM будет создан другой элемент с тем же идентификатором.

Насколько я знаю, прослушиватели событий, такие как $("body").on("click", "#msgWindow", будут только пожар в первом экземпляре элемента, соответствующего этому ID в DOM.

У вас не должно быть несколько идентификаторов в документе, это плохая практика, подумайте об использовании класса.

+0

или выполнить проверку, чтобы узнать, существует ли этот элемент или дать им динамический идентификатор – mcgrailm

+1

@mcgrailm Да, с переменной счетчика или что-то в этом роде – mattytommo

+0

Я не сторонник вышеуказанного подхода, просто интересно, какие побочные эффекты есть. Я хочу объект «simpleton». – Tim

Смежные вопросы