2010-11-17 2 views
0

Можно создать дубликат:
Detect element content changes with jQueryОгонь функция JQuery во время выполнения

У меня есть обертка DIV сказать

<div id="placesNewCheckinContainer" style="display:none"> 
</div> 

Если во время выполнения вставляется любой элемент Дом/Удаленный внутри этого местаNewCheckinContainer, я хочу, чтобы огонь выполнял функцию jQuery. Помогите мне, как это реализовать. Thanks

+0

Что вы подразумеваете под управлением? Как загружается страница или загружается на страницу? – wajiw

+0

Runtime означает, что страница загружена. – Soarabh

ответ

3

Там нет удобного способа сделать это полностью кросс-браузер образом. Firefox, Chrome и Safari поддерживают событие DOMSubtreeModified, которое будет срабатывать для любых изменений DOM внутри определенного элемента. Вышеупомянутые браузеры и поддержка Opera DOMNodeInserted и DOMNodeRemoved, который также будет выполнять эту работу.

$("#placesNewCheckinContainer").bind("DOMNodeInserted DOMNodeRemoved", function() { 
    alert("Something happened inside #placesNewCheckinContainer"); 
}); 

К сожалению, IE не поддерживает ни одно из этих событий. У этого есть свое собственное событие, которое может частично выполнить эту работу, однако - onpropertychange. Это может уведомить вас, когда значение innerHTML изменяется, но только для модификаций прямых детей, а не для всех потомков.

0

Единственный способ, с помощью которого я могу справиться с этим типом ситуации, - события Mutation.

http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mutationevents

Эти события до сих пор широко не поддерживается; Однако у вас есть такие события, как

  • onsubtreemodified
  • onnodeinserted
  • onnoderemoved
  • ondomnoderemovedfromdocument
  • ondomnodeinsertedintodocument
  • onattrmodified
  • oncharacterdatamodified

Вы также можете посмотреть на аналогичных постах как:

Detect element content changes with jQuery

0

jQuery имеет событие изменения, но оно используется только для полей ввода пользователя (браузер запускает эти события). Управление DIV, которое вы указали, должно происходить из кода. Так почему бы не найти, где происходит манипуляция, а затем добавить туда какую-нибудь логику?

Я нашел большую статью некоторое время назад "Custom events in jQuery open doors to complex behaviors"

Это охватывает некоторые интересные вещи, которые вы можете сделать с пользовательской привязкой.Но вам все равно нужно запустить триггер, а это значит, что он управляет кодом, который изменяет содержимое div для запуска триггера, или устанавливает временной интервал для контроля содержимого div для изменения, которое могло бы срабатывать триггер (что я бы не рекомендовал - как это не мгновенно и вызывает ненужные накладные расходы).

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