2011-02-11 111 views
7

我無法獲得每個子元素的正確格式化文本,無論是作爲數組還是作爲文本。 。從jQuery獲取兒童元素的.text()

我曾試圖

變種名稱=的jQuery( 「childOne」)文本(); 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> 

,我需要多暗淡陣列生成輸出,使每個兒童element's文本可適當想通了。

首選輸出可以是數組或任何形式。

Array 
(
    0 = > array (
      0 => "David", 
      1 => "541" 
     ), 

    1 = > array (
      0 => "Gruce", 
      1 => "162" 
     ), 

    2 = > array (
      0 => "Proman", 
      1 => "743" 
     ) 
) 

回答

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。這要快得多。

+0

另一件事:如果您在當前範圍內不止一次訪問$(本),你應該使用一個單獨的變量:像變量$這一點。所以,jQuery不能包含這個元素兩次或更多。 – BaggersIO 2011-02-11 11:48:17

+0

'data'here is literal array .. – OpenCode 2011-02-11 12:48:09

2

如果這是一個固定的結構,你可以這樣做:

var data = []; 

$('.parent').each(function() { 
    data.push({ 
     'name': $(this).children('.childOne').text(), 
     'number': $(this).children('.childTwo').text() 
    }); 
}); 

編輯:顯然忘了.text();)

0
$('.parent').each(function(index) { 
    alert($(this).find('.childOne').text()); 
    alert($(this).find('.childTwo').text()); 
    }); 

後,你可以把它們放到一個數組

+0

感謝Alexl你的答案 – OpenCode 2011-02-11 12:38:52

1

我已經做了工作example

var array= []; 


$('.parent').each(function(index) { 
    array.push({ 
     'name': $(this).children('.childOne').text(), 
     'number': $(this).children('.childTwo').text() 
    }); 
    }); 
alert(array[0].name);