Jquery .live () не работает с HTML5 Video Events - PullRequest
5 голосов
/ 08 июня 2011

У меня проблемы с взаимодействием с оконченным событием в видео HTML5. Проблема в том, что тег динамически добавляется на страницу с помощью подключаемого модуля lightbox-clone, и я не могу использовать bind для получения события окончен . Пробовал использовать live () , но это тоже не сработало. Я, конечно, могу использовать «щелчок» в качестве события, но ни play , pause , ни окончания работать не будут. Пробовал делегат , но это не сработало.

Код выглядит примерно так (я использовал решение, опубликованное в другом месте в Stackoverflow):

$("video").live("play", function() {
    alert("It moves!");
});

Использование связывания дает желаемый эффект, но не влияет на тег видео внутри всплывающего контейнера. HTML - это стандартный тег <video>, заключенный в div, но если вам это нужно, я могу включить его.

Может кто-нибудь придумать обходной путь для этого, или это просто невозможно сделать? Я довольно новичок в Jquery, так что я могу упустить что-то очевидное здесь. Я использую старую версию Jquery (1.3.2), но также протестирован на 1.6.1 безрезультатно.

Ответы [ 2 ]

5 голосов
/ 09 июня 2011

Я думаю, live метод основан на барботировании событий.Методом live может быть захвачен только тот случай, когда пузырьки.Нет общепринятого мнения о том, что события тега video должны пузыриться, поэтому я думаю, что браузеры реализуют эти события не пузырьково.Это означает, что вам нужно bind каждый video элемент, который вы создаете.

0 голосов
/ 08 июня 2011

Можете ли вы вместо этого использовать метод delegate?Я считаю это более надежным, чем live.Вы даже можете просто использовать тег body в качестве ссылки.

$('body').delegate('video','play',function() {
    alert('it moves!');
});

Я собрал очень простой пример для jsfiddle , и он, похоже, работает, хотя на самом деле это не полный тег видео...

Редактировать: после дальнейших размышлений этот пример вообще не был удачным - даже пользовательские события запускаются, когда они запускаются jquery.

...