从jQuery()获取子元素的.text()

时间:2011-02-11 11:27:58

标签: javascript jquery

我无法获得每个子元素的正确格式化文本,无论是作为数组还是作为文本。

我曾尝试过

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"
        )
)

5 个答案:

答案 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