2011-07-05 176 views
25

我想使用一个按钮来启动一个使用jQuery的HTML5音频标签的轨道,但我不断收到一个错误。HTML5音频和jQuery

var song = $('#audio'); 

$('#play').click(function() { 
song.play(); 
}); 

当我使用的document.getElementById(“音频”),它的工作原理,但使用jQuery选择我收到以下错误时:

遗漏的类型错误:对象的翻译:有没有方法“玩'

感谢您的任何帮助。

回答

56

尝试让本机的DOM元素的jQuery一无所知由$('#audio')选择返回的包裹阵列上约.play方法:

song.get(0).play(); 
+3

这工作?为什么?你能否给出一个简单的解释,只是让我明白。谢谢!! – user699242

+7

@ user699242,当你使用'$('.. some selector ..')'这将返回一个与你的选择器匹配的实际DOM对象数组。 .play方法是一种本地HTML5方法,您需要在实际的本机DOM元素上调用该方法。所以你需要从jQuery选择器返回的数组中获取这个本地DOM元素。因为你使用了一个id选择器('#audio'),所以我们可以假设你的DOM中有一个元素与这个选择器相匹配,所以我们可以安全地使用'.get(0)'来获取它。所以基本上当你使用'$(...)'时,你只能调用结果的jQuery函数,'play'不是 –

+0

真的有帮助。但是,为什么在使用.get(0).tagName时报告未定义的错误? – panda

13

你也可以把它写像song.trigger('play');。这将允许您使用$('#audio');选择器。

3

相反。获得的()只使用对象的符号:

var song = $('#audio'); 

$('#play').click(function() { 
    song[0].play(); 
}); 

它的打字比较少:)