如何将 JQuery 文本参数作为变量传递

How do I pass JQuery text parameter as a variable

对于程序 JPlayer,我想在 jQuery 语句的播放列表参数中创建任意数量的 {..},{..}。 "newtest" 变量的格式为 {mp3: filename}, {mp3: filename2}...我似乎找不到创建 "newtest" 的正确语法。

此代码有效:

var filename = "/mymusic/" + mydata[1];
// var newtest = new String('{ mp3: filename }');
script(type='text/javascript').
    //<![CDATA[
    $(document).ready(function() {
        var myPlaylist = new jPlayerPlaylist({
                jPlayer: "#jquery_jplayer_N",
                cssSelectorAncestor: "#jp_container_N"
            },
            [
                // newtest
                {
                    mp3: filename
                }
            ],....

此代码不会产生错误,但不会访问我的音乐文件:

var filename = "/mymusic/" + mydata[1];
var newtest = new String('{ mp3: filename }');
script(type='text/javascript').
    //<![CDATA[
    $(document).ready(function() {
        var myPlaylist = new jPlayerPlaylist({
                jPlayer: "#jquery_jplayer_N",
                cssSelectorAncestor: "#jp_container_N"
            },
            [
                newtest
                // {
                // mp3: filename
                //  }
            ],...     

以下两个答案都有效:

var newtest = { mp3: filename };

var myplayList = [
    { mp3: filename1 },
    { mp3: filename2 }
]

谢谢

为什么不先以更易读的方式创建值,然后再传入数据?

这样,您就可以传递正确的结构。

您的 parameter 是一个对象。 您的参数的 newtest 值实际上是一个集合 - objectsarray

在下面的代码中,更容易看出是怎么回事:

var params = {
    jPlayer: '#jquery_jplayer_N',
    cssSelectorAncestor: '#jp_container_N'
}

// This is an array of objects
var playList =[
    { mp3: 'filename1' },
    { mp3: 'filename2' },
    { mp3: 'filename3' }
]

var myPlaylist = newjPlayerPlaylist(params, playList);

说明

您似乎在两个代码块中传递了不同的数据类型。 在您的第一个代码块中,您传递了一个包含单个 object:

的数组
[
  // newtest
  {
      mp3: filename
  }
]

在第二个代码块中,newtest 是一个字符串,因此您最终传递了一个包含 string.

的数组

解决方案

newtest 设置为 var newtest = { mp3: filename }; 应该可以。