如何通过可变

问题描述:

设置jQuery脚本的选项/参数如果脚本的参数是这样的: 。不是(“.loaded”) .bxSlider({ 模式:rendered.data(‘模式’), speed:rendered.data('speed') }) .addClass('loaded');如何通过可变

例如mode: 'vertical', speed: 1000 ...

我怎么能呼应(因为缺乏一个更好的词),这些在我的script.js文件中的文本调用的jQuery插件...是这样的:

 var rendered = plRenderItem(section); 

     var settings = {}; 

     var arguments = ''; 

     if (isNaN(rendered.data('mode'))) { 
      settings.mode = rendered.data('mode'); 
     } 

     if (isNaN(rendered.data('speed'))) { 
      settings.speed = parseInt(rendered.data('speed')); 
     } 

     for (var key in settings) { 
      if (settings.hasOwnProperty(key)) { 
       if ('boolean' == typeof key) { 
        arguments += (key + ':' + settings[ key ] + ','); // e.g. captions: false, 
       } else if ('number' == typeof key) { 
        arguments += (key + ':' + parseInt(settings[ key ]) + ','); // e.g. speed: 1000, 
       } else { // string 
        arguments += (key + ':"' + settings[ key ] + '",'); // e.g. mode: "vertical", 
       } 
      } 
     } 

     var args = arguments.slice(0, -1); // remove last comma 

     rendered 
      .not('.loaded') 
      .bxSlider({ 
       args: args 
      }) 
      .addClass('loaded'); 

args: args只是一个尝试......不知道还有甚么可以尝试......但没有它没有奏效。如果是这样的话,一切都会变成肉汁,我不必问这个问题。

非常感谢您的帮助!

请注意,我主要是一个PHP开发人员,而不是很多JS。我通常会让PHP将参数作为文本准备,但是这种特殊的实现不是以这种方式设置的。

+0

我认为我了解情况,但不是最终目标。你想做什么? (注意:knockout.js标签是否相关?) –

+0

uhm ...我建议不要使用一个名为'arguments'的var,这真的很容易引起问题。 –

+0

这与淘汰赛有什么关系? –

好吧,长话短说,我没有完全理解第三方的KnockoutJS实现,这就是为什么我很难问一个好问题......但是谢谢所有的尝试。

我的问题的真正答案是,我不应该在{}包装对象变量...所以.bxSlider(settings)做了诡计!