为什么我不能选择使用.play()使用jQuery选择视频?

时间:2012-01-16 06:48:19

标签: jquery html5

为什么这样做

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

这个

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

或者

$("video").play();

不? (假设页面上只有一个视频元素)

2 个答案:

答案 0 :(得分:3)

因为当你在jQuery选择的对象上使用.play()时,你最终会在该对象上调用该函数,实际上它不是真正的DOM节点,而是包含在jQuery对象中的DOM节点的集合。而且这个对象根本不知道任何游戏功能。

事实上,当选择器没有命中任何东西时,jQuery对象甚至可以为空,对该包的所有调用仍然有效,但由于没有目标,它不会有任何影响。

如果以类似方式(var v = document.getElementsByTagName("video")[0];)调用该数据包,并且内部至少有一个DOM节点,则会获得一个真正的DOM节点作为返回对象。此节点知道.play()函数。

见这里:Play/pause HTML 5 video using JQuery

答案 1 :(得分:0)

有两个问题。页面上可能没有id为“video”的元素,因此第一个jQuery语句没有返回任何内容。第二个语句的问题是它返回一个没有play()方法的数组。

第二个问题是jQuery返回一个jQuery对象,你必须让底层DOM元素能够调用“本机”方法。

所以你可能正在寻找这样的东西:

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

这将在返回的第一个DOM元素上调用play()方法。