Как запустить код, когда элементы прикреплены, как в случае с jQuery live () с событиями? - PullRequest
5 голосов
/ 20 апреля 2010

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

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

Как мне это сделать?

РЕДАКТИРОВАТЬ: Для уточнения; Я хотел бы запустить анимацию на только что созданном элементе. Помимо того, что анимация бесполезна перед первым добавлением, в некоторых браузерах свойство backgroundColor не наследуется от класса CSS, пока не будет присоединено к DOM. Это приводит к сбою кода анимации.

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

Ответы [ 3 ]

2 голосов
/ 20 апреля 2010

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

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

1 голос
/ 20 апреля 2010

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

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

0 голосов
/ 20 апреля 2010

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

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

$('div').append($span);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...