jQuery插件 - 用于设置的循环

时间:2013-07-30 15:01:45

标签: javascript jquery

我正在创建一个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'?

3 个答案:

答案 0 :(得分: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'
    }  
  ]
});

答案 1 :(得分: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循环遍历数组。

答案 2 :(得分:0)

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

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