2011-07-05 232 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(); 
}); 

它的打字比較少:)