2013-07-30 110 views
0

我正在制作一个jQuery插件,其中的设置具有相同的名称但数字不同。所谓的在我的HTML文件中的脚本是这样的:jQuery插件 - 用于设置的循环

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

有可能是无限期量的设置,即cName18 所以在实际的插件,我想遍历所有情况下与一个for循环,但用“我'作为字符串的一部分,而不是调用数组的一部分。类似这样的:

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

虽然这显然不起作用。有没有人知道如何在这样的循环中使用'我'?

+0

我猜你真的需要学习关于[数组对象](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)... –

回答

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' 
    } 
    ] 
}); 
+0

谢谢你这是一个很好的解决方案。我没有提到每个cName都会有一个cDescription,所以不想因为这个原因将它们放入数组中。 – Coop

+0

我已经更新了我的答案,以解释您需要的任何数量的字段。你应该为这个任务使用一个数组。无论如何,你只是结束了一个数组。 –

+0

是的,我明白了。这可能是更好的方式,谢谢你的帮助。 – Coop

1

这不工作?

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

然而,这是一种更好的主意是让插件接受“的CNAME”的数组,像这样:

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

然后,在插件,你可以使用简单的$。每个循环遍历数组。

+0

没有,这是行不通的。我认为问题是让它理解我想添加'我'几乎就像创建一个字符串,所以它会输出cName1,cName2等 – Coop

+0

冷静叶阵列将工作,但不完全是我在找什么,因为每个cName都会有一个cDescription,所以我不想让它们聚集在数组中。我找到了一个解决我自己的问题thogh - 张贴上面 – Coop

0

找到了解决自己的问题:

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

这里的概念是不同的。我把'cName'作为一个字符串对待它自己的变量,而不是一个对象。 – Coop

+0

我有一个错字,cName而不是'cN​​ame',但除此之外,我们的两个例子几乎相同。我没有看到任何地方的“不同概念”。 – MightyPork

+0

谢谢你的帮助,但我已经接受了一个答案。我最初的问题是理解混合对象和字符串以获得我需要的结果的方式。你的原始解决方案并没有带来任何答案,这对于解决问题非常重要。 – Coop