2013-08-11 3 views
0

Если я связал события с несколькими элементами, содержащимися, скажем, в таблице. Если я регенерирую эту таблицу innerHTML, создав новую строку и назначив ее, связаны ли события еще? Нужно ли мне перепроверять их всех?Связывание и модификация события innerHTML

jQuery.delegate также работает, если я модифицирую innerHTML вручную?

+1

Возможно, вы проверили это за столько времени, сколько потребовалось, чтобы опубликовать вопрос. Просто говорю'. –

ответ

1

Если я восстановил внутреннюю структуру таблицы HTML, чтобы построить новую строку и присвоить ее, связано ли событие еще?

No.

У меня есть пересвязать их всех?

Да.

Работает ли jQuery.delegate, если я модифицирую innerHTML вручную?

Если вы изменяете innerHTML элемента, на котором .delegate() называлась, нет. Да, если вы модифицируете innerHTML одного из своих детей.

+0

Спасибо! Я добавил еще один вопрос к моему сообщению о jQuery.delegate(). – Virus721

+0

Спасибо за помощь. – Virus721

0

Вам обязательно нужно будет переустановить. Когда вы восстанавливаете innerhtml, он уничтожает элементы dom, которые были в нем, и любые привязки, которые у них были.

+0

Спасибо за ваш ответ. – Virus721

1

Вам нужно будет переустановить их, но jquery delegate или новый on будут работать, если вы привяжетесь к элементу, который всегда будет находиться в DOM, как тело или документ.

$('body').on('click', 'table td', function() { 

}); 
+0

Хорошо спасибо. Есть ли причина предпочесть больше делегатов? – Virus721

+0

Кстати, происходит ли делегирование событий? Поскольку у меня есть динамические элементы, содержащие динамические элементы, содержащие динамические элементы и т. Д. Мне, возможно, придется создавать такие вещи, как «body .Keyboard .Layout .Key» или даже более крупные селектора для этого. Будет ли это замедляться? – Virus721

+0

@ Virus721 Я думал, что делегат был устарел в пользу, но это не так, и я не думаю, что это замедлит что-либо, поскольку все пузырь событий и простое уловить это событие выше в DOM. – jcubic

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