Почему я не могу выбрать использование .play () для выбора видео с помощью jQuery? - PullRequest
1 голос
/ 16 января 2012

Почему это работает

var v = document.getElementsByTagName("video")[0];  
v.play();

А это

$("#movie").play();

или это

$("video").play();

нет? (при условии, что на странице только один элемент видео)

Ответы [ 2 ]

3 голосов
/ 16 января 2012

Потому что, когда вы используете .play() в выбранном объекте jQuery, вы в конечном итоге вызываете эту функцию для этого объекта, который на самом деле не является реальным узлом DOM, а представляет собой набор узлов DOM, заключенных в объект jQuery. И этот объект просто не знает ни о какой функции воспроизведения.

На самом деле объект jQuery может быть даже пустым, когда селектор ничего не нажимает, все вызовы этого пакета все еще работают, но, поскольку нет целей, это не будет иметь никакого эффекта.

Если вы вызываете этот пакет в виде массива (var v = document.getElementsByTagName("video")[0];), и внутри есть хотя бы один DOM-узел, вы получаете реальный DOM-узел в качестве возвращаемого объекта. Этот узел знает о функции .play().

См. Здесь: Воспроизведение / пауза видео HTML 5 с использованием JQuery

0 голосов
/ 16 января 2012

Есть две проблемы. Вероятно, на вашей странице нет элемента с идентификатором "video", поэтому первый оператор jQuery ничего не возвращает. Проблема со вторым оператором состоит в том, что он возвращает массив, у которого нет метода play ().

Вторая проблема заключается в том, что jQuery возвращает объект jQuery, и вы должны получить базовый элемент DOM, чтобы иметь возможность вызывать "нативные" методы.

Так что вы, вероятно, ищете что-то вроде этого:

$("viedeo")[0].play ():

Это вызовет метод play () для первого возвращенного элемента DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...