我正在尝试暂停jQuery对象的视频并且收到错误消息:
未捕获的TypeError:undefined不是函数
Heres de code:
function daVideos(myVideo, arrPause, _src)
{
$player = myVideo.get(0);
$player.attr('src', _src);
$player.addEventListener("timeupdate", function(event)
{
var isPause = false;
for(var i=0; i<arrPause.lenght; i++)
{
if($player.currentTime >= arrPause[i] && !isPause)
{
isPause = true;
$player.pause();
}
}
});
}
var arr1 = [2,4];
daVideos($("#video"), arr1, "video/sintel_trailer-1080p.mp4");
任何人都可以帮我说出我做错了什么???
答案 0 :(得分:2)
$player = myVideo.get(0);
$player.attr('src', _src);
$player.addEventListener("timeupdate", function(event)
让我们考虑一下这些问题。首先,我们有一个jQuery对象(myVideo
)。然后,我们使用get(0)
($player
)获取本机DOM对象。然后,我们尝试在本机DOM对象上调用jQuery函数(attr
)(这是发生错误的地方,因为本机DOM对象没有attr
函数)。然后,我们尝试使用原生addEventListener
系统添加事件。
这一切似乎有点复杂,有点困惑。简单的解决方案就是在整个过程中使用jQuery:
var $player = myVideo.get(0); // keep for later, note we're using var
myVideo.attr('src', _src);
myVideo.on('timeupdate', function(event)
另一种选择就是使用DOM:
var $player = myVideo.get(0); // note that we're using var again
$player.src = _src;
$player.addEventListener("timeupdate", function(event)
答案 1 :(得分:0)
此代码
$player = myVideo.get(0);
给出了真实的元素,而不是jQuery包装器。 attr
是jQuery包装器对象的一种方法。
如果你想获得jQuery对象的第一个元素,但仍然将它包装在jQuery中,你可以使用eq
而不是get
:
$player = myVideo.eq(0);
$player.attr('src', _src);
注意,您必须获取真实元素,或使用on
代替addEventListener
。
或者,您可以使用vanilla-js方式:
$player = myVideo.get(0);
$player.setAttribute('src', _src);