我正在寻找使用jQuery每个函数而不是传统的javascript for循环来定义一系列变量的正确方法。
topic1 = $('.selector-circle').children('.selector-1').text();
topic2 = $('.selector-circle').children('.selector-2').text();
topic3 = $('.selector-circle').children('.selector-2').text();
最初,我编写了如上所述的脚本,但现在该项目需要不同数量的"主题"和相应的文本(),所以我需要代码是灵活的,而不是我最初使用的更硬编码的方法。
我知道如何在.each中的变量中插入' .selector-1'部分,与"我"作为每个指数:
topic1 = $('.selector-circle').children('.selector-' + i).text();
但我不知道如何序列化" topic1"变量名称,因此它基本上变成了#34; topic + i"因为每次运行的次数都很多,然后它会与每个相应的"选择器+ i"相关联。
似乎我可能需要创建一个数组。
提前感谢您提供任何有用的指示。
答案 0 :(得分:1)
阵列会好得多。根据您想要对数据执行的操作,您甚至可能不需要这样做。您想使用jQuery .filter()
和.map()
方法。
var topics = $('.selector-circle').children().filter(function () {
return this.className.match(/\bselector-\d+/);
}).map(function() {
return $(this).text();
}).get();
//result: ["topic1", "topic2", "topic3", ....]
答案 1 :(得分:1)
您只需使用wildcard
选项即可选择所有孩子。它是动态的,您无需管理单独的数组来跟踪元素。
<强> HTML 强>
<div class="selector-circle">
<p class="selector-1 someother-class">selector 1</p>
<p class="selector-2">selector 2</p>
<p class="selector-3">selector 3</p>
<p class="selector-4">selector 4</p>
<p class="selector-5">selector 5</p>
</div>
<强>的JavaScript 强>
var $selectors = $('.selector-circle').children('[class^="selector-"]');
$.each($selectors, function() {
var title = $(this).text();
console.log(title);
});
<强>输出强>
selector 1
selector 2
selector 3
selector 4
selector 5
如果将来添加selector-6
,selector-7
等,上述代码仍然无需更改即可运行。
这是工作jsfiddle。
答案 2 :(得分:0)
一种简单的方法是使用数组:
var arrOfData = [];
var length = 3; // change this if you need something dynamic
// fill the array
for(var i = 1 ; i <= length; i++)
{
arrOfData.push($('.selector-circle').children('.selector-' + i).text());
}
// Heres how you fetch data
function getTitle(idx){
return arrOfData[idx];
}