jQuery: дождитесь загрузки элемента (тега видео - динамически генерируемого) - PullRequest
3 голосов
/ 14 марта 2012

Не используя тайм-аут, я хочу использовать jQuery для проверки тега видео, который скоро будет сгенерирован.Пока мы ищем тег видео, он еще не существует.

Я мог бы использовать window.load, чтобы дождаться загрузки всего окна, а затем вызвать функцию обратного вызова:

window.load = function () {player = jQuery("#videoid"; }

но нужно ли в любом случае «подождать», пока этот конкретный тег видео не будет вставлен / загружен в тело, а затем выполнить функцию обратного вызова?что-то вроде:

jQuery("#videoid").bind('load', function() { player = jQuery("#videoid"); })

заранее спасибо

1 Ответ

9 голосов
/ 14 марта 2012

Вы можете делегировать привязку к событию DOMNodeInserted для элемента, чтобы при его вставке запускался обработчик события. Это не работает в IE8 и более ранних версиях, но не работают и теги <video>:

jQuery(document).delegate('video', 'DOMNodeInserted', function () {
    alert('Wana watch a video?');
});

Обратите внимание, что $(<root element>).on(<event>, <selector>, <event handler>) совпадает с $(<root element>).delegate(<selector>, <event>, <event handler>).

Вот демоверсия: http://jsfiddle.net/vW4Pg/

UPDATE

Если вы заинтересованы в реализации этой идеи, обязательно посмотрите на это: https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events

Спасибо за комментарий @ JFK.

...