Я хотел бы выполнить некоторый код прямо после того, как определенный набор элементов присоединяется. jQuery.live()
позволяет Вам связывать обработчики событий с элементами, даже если они создаются позже. Но AFAIK там не является никаким подходящим методом, чтобы сделать что-то как следующее:
$("some selector").live("attach", function() { $(this).whatever(); });
Как я могу выполнить это?
Править: Для разъяснения; я хотел бы выполнить анимацию на недавно созданном элементе. Кроме факта анимация бесполезна прежде, чем добавить сначала в некоторых браузерах backgroundColor
свойство не наследовано от класса CSS, пока это не присоединено к DOM. Это заставляет мой код анимации повреждаться.
Таким образом, я хотел бы создать этот элемент, так или иначе применить анимацию для выполнения, после того как это присоединяется, и затем возвратите его.
Я предлагаю вам проверить DOMNodeInserted и DOMNodeRemoved .
Это также может быть полезно: Определение того, когда элементы DOM были удалены с помощью jQuery
Очень сложно сделать кроссбраузерным способом. Мне пришлось реализовать аналогичную вещь, и мне нужно было использовать события мутации, как предложил @Makram (DOMNodeInserted, DOMNodeRemoved), и резервный метод setInterval (просто опрос для изменений) - setInterval останавливается, если одно из событий мутации запускается, так как тогда вы можете предположить, что события работают, и вам не нужен опрос.
Также следует отметить, что live (), похоже, не всегда работает в IE, поэтому в некоторых случаях я вручную повторно привязываю события (конечно, после отмены привязки!)
Насколько мне известно, в jQuery нет событий, которые запускаются, когда dom изменения. Вам нужно будет запустить код на недавно присоединенном элементе, который становится полностью доступным для запросов, как только он передается в jquery, например
var $span = $('<span>my new document fragment</span>');
$span.css('what','ever');
$('div').append($span);