2014-11-25 47 views
0

我有這一塊的html:JQuery文本函數返回重複的文本。爲什麼?

<div class="participant inline_part" data-part-id="37aaae8"> 
    [...] 
    <div class="member_1 inline_member"> 
     [...] 
     <span class="member_name"><a class="aLink" href="/user/15">Bob Moidusen</a></span> 
    </div> 
    <div class="member_2 inline_member"> 
     [...] 
     <span class="member_name">Mark Sidhuescu</span>  
    </div> 
</div> 

如果我稱之爲:

$("div[data-xct-part-id='37aaae8'] div.member_1 .member_name").text(); 

$("div[data-xct-part-id='37aaae8'] div.member_2 .member_name").text(); 

它返回我 「鮑勃MoidusenBob Moidusen」 和 「標記SidhuescuMark Sidhuescu」 。

爲什麼?

將帖子我有succesive調用同樣的問題:尋找

$("div[data-xct-part-id='37aaae8']").find("div.member_2").find(".member_name").text(); 

我想明白這一點,以避免今後發生類似的問題。

回答

0

有兩個元素與選擇匹配。因此,根據text()規範()獲取匹配元素集合中每個元素(包括它們的後代)的組合文本內容,或者設置匹配元素的文本內容),文本被返回兩次。

0

更改您的通話

$("div[data-xct-part-id='37aaae8'] div.member_1 > .member_name").text(); 
$("div[data-xct-part-id='37aaae8'] div.member_2 > .member_name").text(); 

這應該解決您的問題。

至於它爲什麼這樣做,我不知道。

+0

不適用於我。 – francadaval 2014-11-25 09:10:01

0

使用map jQuery中

var res = $(".inline_member span.member_name").map(function() { 

     return $(this).text(); 
}).get(); 

console.log(res); 

$("div.member_1 .member_name").text() 
$("div.member_2 .member_name").text() 

Fiddle

1

看來,它並沒有做到這一點。

我已經把你的榜樣了在小提琴(和固定的搜索查詢,刪除 「XCT」):在控制檯此輸出

http://jsfiddle.net/jppresents/jy5jrd2s/

console.log('Result query 1:' + $("div[data-part-id='37aaae8'] div.member_1 .member_name").text()); 
console.log('Result query 2: ' + $("div[data-part-id='37aaae8'] div.member_2 .member_name").text()); 

結果:

Result query 1:Bob Moidusen 
Result query 2: Mark Sidhuescu 

至少使用jquery 1.11.0當如圖鏈接撥弄。

+0

非常感謝。我已經看到,如果html模式重複,文本會返回兩次。我認爲文本()返回在jQuery對象中的第一個元素的文本,但似乎串聯文本返回。 – francadaval 2014-11-25 09:12:58

+0

@francadaval不客氣。如果完全適合,請接受答案。 – JPS 2014-11-25 09:39:15