我无法获得每个子元素的正确格式化文本,无论是作为数组还是作为文本。
我曾尝试过
var name = jQuery(“。childOne”)。text(); var number = jQuery(“。childTwo”)。text();
但它会在名称和号码中加入所有名称/号码文本。
HTML是:
<span class="parent"><span class="childOne">David</span><span class="childTwo">541</span></span>
<span class="parent"><span class="childOne">Gruce</span><span class="childTwo">162</span></span>
<span class="parent"><span class="childOne">Proman</span><span class="childTwo">743</span></span>
我需要在multi-dim-array中生成输出,这样才能正确计算出每个子元素的文本。
首选输出可以是数组或任何形式。
Array
(
0 = > array (
0 => "David",
1 => "541"
),
1 = > array (
0 => "Gruce",
1 => "162"
),
2 = > array (
0 => "Proman",
1 => "743"
)
)
答案 0 :(得分:7)
试试这个:
var data = [];
$('span.parent').each(function() {
var $this = $(this);
data.push({
'name' : $this.find('span.childOne').text(),
'number' : $this.find('span.childTwo').text()
});
});
BTW:jQuery使用Sizzle选择器引擎。您应该在类之前定义元素类型,例如span.parent
。这要快得多。
答案 1 :(得分:2)
如果这是一个固定的结构,你可以这样做:
var data = [];
$('.parent').each(function() {
data.push({
'name': $(this).children('.childOne').text(),
'number': $(this).children('.childTwo').text()
});
});
编辑:显然已忘记.text()
;)
答案 2 :(得分:1)
我做了一个工作example
var array= [];
$('.parent').each(function(index) {
array.push({
'name': $(this).children('.childOne').text(),
'number': $(this).children('.childTwo').text()
});
});
alert(array[0].name);
答案 3 :(得分:0)
$('.parent').each(function(index) {
alert($(this).find('.childOne').text());
alert($(this).find('.childTwo').text());
});
将它们放入数组之后
答案 4 :(得分:0)
@Dyvor
BTW:jQuery使用Sizzle selctor引擎。您应该在类之前定义元素类型,例如span.parent。这要快得多。
不正确!检查此性能测试。实际上是另一种方式。
http://jsperf.com/jquery-class-selector-vs-type-class-selector