Как выполнить код, когда элементы присоединяются как живой jQuery (), делают с событиями?

Я хотел бы выполнить некоторый код прямо после того, как определенный набор элементов присоединяется. jQuery.live() позволяет Вам связывать обработчики событий с элементами, даже если они создаются позже. Но AFAIK там не является никаким подходящим методом, чтобы сделать что-то как следующее:

$("some selector").live("attach", function() { $(this).whatever(); });

Как я могу выполнить это?

Править: Для разъяснения; я хотел бы выполнить анимацию на недавно созданном элементе. Кроме факта анимация бесполезна прежде, чем добавить сначала в некоторых браузерах backgroundColor свойство не наследовано от класса CSS, пока это не присоединено к DOM. Это заставляет мой код анимации повреждаться.

Таким образом, я хотел бы создать этот элемент, так или иначе применить анимацию для выполнения, после того как это присоединяется, и затем возвратите его.

5
задан muhuk 20 April 2010 в 21:13
поделиться

3 ответа

Я предлагаю вам проверить DOMNodeInserted и DOMNodeRemoved .

Это также может быть полезно: Определение того, когда элементы DOM были удалены с помощью jQuery

2
ответ дан 15 December 2019 в 06:20
поделиться

Очень сложно сделать кроссбраузерным способом. Мне пришлось реализовать аналогичную вещь, и мне нужно было использовать события мутации, как предложил @Makram (DOMNodeInserted, DOMNodeRemoved), и резервный метод setInterval (просто опрос для изменений) - setInterval останавливается, если одно из событий мутации запускается, так как тогда вы можете предположить, что события работают, и вам не нужен опрос.

Также следует отметить, что live (), похоже, не всегда работает в IE, поэтому в некоторых случаях я вручную повторно привязываю события (конечно, после отмены привязки!)

1
ответ дан 15 December 2019 в 06:20
поделиться

Насколько мне известно, в jQuery нет событий, которые запускаются, когда dom изменения. Вам нужно будет запустить код на недавно присоединенном элементе, который становится полностью доступным для запросов, как только он передается в jquery, например

var $span = $('<span>my new document fragment</span>');
$span.css('what','ever');

$('div').append($span);
0
ответ дан 15 December 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: