0

我正在制作一个 jQuery 插件,其中的设置名称相同但编号不同。所以在我的 HTML 文件中调用的脚本如下所示:

<script>
  $(document).ready(function(){
    $('body').myPlugin({
      cName1 : 'First name here',
      cName2 : 'Second name in here',
      cName3 : 'Third name here',
    });
  });
</script>

可能有不定数量的设置,即cName18 在实际插件中,我想使用 for 循环遍历所有实例,但使用 'i' 作为字符串的一部分,而不是调用数组的一部分。像这样的东西:

for (var i=1;i<20;i++) {
  var cName = settings.cName + i;
  if (cName) { cNameArray.push(cName); }
}

这显然是行不通的。有谁知道如何在这样的 for 循环中使用“i”?

4

3 回答 3

2

听起来你需要一个数组。

$('body').myPlugin({
  cNames: [
    'First name here', 
    'Second name in here', 
    'Third name here'
  ]
});

以及基于评论的快速更新,因为您也需要描述:

$('body').myPlugin({
  cNames: [
    {
      name: 'First name here',
      description: 'First!'
    },
    {
      name: 'Second name in here',
      description: 'I am the second one!'
    },
    {
      name: 'Third name here',
      description: 'BRONZE BABY'
    }  
  ]
});
于 2013-07-30T15:05:41.557 回答
1

这不行吗?

for (var i=1;i<20;i++) {
  var cName = settings['cName' + i];
  if (cName != undefined && cName != null) { cNameArray.push(cName); }
}

但是,更好的方法是让插件接受“cNames”数组,如下所示:

  $(document).ready(function(){
    $('body').myPlugin({
      names : ['First name here', 'Second name in here', 'Third name here']
    });
  });

然后,在插件中,您可以使用简单的 $.each 循环遍历数组。

于 2013-07-30T15:03:43.387 回答
0

找到了我自己的问题的解决方案:

for (var i=1;i<20;i++) {
      var cName = 'cName' + i;
      if (settings[cName]) { cNameArray.push(cName); }
    }
于 2013-07-30T15:12:46.063 回答