Javascript 将全局变量传递给jQuery中的$(document).ready函数
我有一个网站,每个歌曲都有特定的字母数字ID,比如说在jQuery播放器中,MP3歌曲必须通过链接分配 jplayer的功能如下:Javascript 将全局变量传递给jQuery中的$(document).ready函数,javascript,jquery,Javascript,Jquery,我有一个网站,每个歌曲都有特定的字母数字ID,比如说在jQuery播放器中,MP3歌曲必须通过链接分配 jplayer的功能如下: $(document).ready(function (){ function playAudio(val) {newVal=val} $("#jquery_jplayer_1").jPlayer({ ready: function (event) { $(this).
$(document).ready(function (){
function playAudio(val) {newVal=val}
$("#jquery_jplayer_1").jPlayer({
ready: function (event) {
$(this).jPlayer("setMedia", {
mp3:"http://website.com/dlb.php?file="+newVal });
},
swfPath: "js",
supplied: "mp3",
wmode: "window"
});
});
我想为用户播放列表中的不同歌曲,因此我通过按钮onClick
传递了歌曲ID,如下所示
onClick="playAudio(<?php echo "'".$songid. "'"; ?>)"
onClick=“播放音频(
无需$(文档)。准备就绪
如果您需要更改歌曲:
var val = '12345'; // your first song
$(document).ready(function() {
$("#jquery_jplayer_1").jPlayer({
ready: function(event) {
$(this).jPlayer("setMedia", {
mp3: "http://website.com/dlb.php?file=" + val
});
},
swfPath: "js",
supplied: "mp3",
wmode: "window"
});
});
function playAudio(nval) {
var val = nval;
$("#jquery_jplayer_1").jPlayer({
"setMedia", {
mp3: "http://website.com/dlb.php?file=" + val
}
});
// --- OR ---
$("#jquery_jplayer_1").changeAndPlay("http://website.com/dlb.php?file=" + val);
}
更多信息:
您需要使用变量作用域
var newVal = 'default_song_to_play_if_any';
function playAudio(val){
newVal = val;
$("#jquery_jplayer_1").jPlayer("destroy");
$("#jquery_jplayer_1").jPlayer({
ready: function (event) {
$(this).jPlayer("setMedia", {
mp3:"http://website.com/dlb.php?file="+newVal
});
},
swfPath: "js",
supplied: "mp3",
wmode: "window"
});
}
//use this ready function only if you want to play a default song on load
$(document).ready(function(){
playAudio(newVal);
});
将ID回显到数据属性中,并在函数中使用jQuery获取它,然后去掉内联单击处理程序。@adeneo,实际上,你能描述一下吗?我不想刷新页面,而且,ID出现在歌曲的播放按钮上,并且有一个列表,我无法在任何地方全局分配ID。我必须使用onClick函数来处理歌曲特定的歌曲我猜是这样的…试试mp3:“http://website.com/dlb.php?file=“+newVal+”.mp3"
谢谢,伙计,这确实很有帮助,但我想问一件事,当单击另一个按钮时,它不会覆盖val的值。val
是函数的参数,而不是全局变量。每个按钮都应该有一个由PHP插入的不同参数值。@AbhishekGahlot查看我的答案请检查我的代码,您可能想销毁在创建一个新的jPlayer实例之前,请查看当前的jPlayer实例。@barmar每个按钮都已经由php为不同的歌曲插入了特定的按钮,仍然不起作用,我认为这可能是player的问题。JavaScript中的嵌套函数很好。@ShutterBug代码仍然很好,它不能完全满足我的要求,因为每个用户可能都有不同的要求ent song。我不能提供song的默认值。@steveax你错了:@PeterSzymkowski这个答案说:“你不能在document.ready中定义函数,因为document.ready本身就是一个函数。”您展示的示例演示了JavaScript中的变量作用域。这可能是ShutterBug的意思,但如果是这样的话,说明就不好了。@steveax document.ready函数被替换为另一个可以获取该值的函数,因此它以这种方式工作,这就是peterszymkowki的答案在某种程度上是正确的原因。
var newVal = 'default_song_to_play_if_any';
function playAudio(val){
newVal = val;
$("#jquery_jplayer_1").jPlayer("destroy");
$("#jquery_jplayer_1").jPlayer({
ready: function (event) {
$(this).jPlayer("setMedia", {
mp3:"http://website.com/dlb.php?file="+newVal
});
},
swfPath: "js",
supplied: "mp3",
wmode: "window"
});
}
//use this ready function only if you want to play a default song on load
$(document).ready(function(){
playAudio(newVal);
});