2013-10-18 75 views
1

我有這樣的代碼:如何只選擇包含jQuery中其他div的div中的文本?

<div class="bodytext1typeenc">Ce qu’il faut retenir 
    <div class="al">Budget «solidarités».</div> 
</div> 

我想唯一的 「CE qu'il faut retenir」。我試過這個:

$('.bodytext1typeenc').text() // --> doesn't work. 
$('.bodytext1typeenc').remove('.al') // --> doesn't work. 

請幫忙嗎?謝謝 !

回答

1

嘿試試這個,而不是你想做的事就是克隆你的元素,然後刪除您的子元素

http://jsfiddle.net/HgdyG/

$(".bodytext1typeenc") 
     .clone() //clone the element 
     .children() //select all the children 
     .remove() //remove all the children 
     .end() //again go back to selected element 
     .text(); 

。如果你是打算使用這個你可以創建一個像這樣的簡單擴展

jQuery.fn.noChild= function() { 

    return $(this).clone() 
      .children() 
      .remove() 
      .end() 
      .text(); 

}; 

然後運行

$(".bodytext1typeenc").noChild(); 
+0

非常感謝!它工作得很好。我對Stackoverflow的第一個問題的回答速度感到驚訝;-)再次感謝! –

+0

沒問題,祝你的項目好運。不要忘記選擇一個答案作爲接受的答案 –

5

您可以克隆,刪除孩子並獲取文本。見下文,

var $clone = $('.bodytext1typeenc').clone(); 
$clone.children().remove() 
$clone.text(); //should return the div's text 

注:你不需要克隆,如果你不希望保留原始內容。

DEMO:http://jsfiddle.net/PX2yA/

0

您可以使用內容(),並過濾掉noteType TEXT_NODE(3)

var val = $('.bodytext1typeenc').contents().filter(function() { 
    return this.nodeType == 3; 
}).text(); 
val = $.trim(val); 

alert('"' + val + '"'); // "Ce qu’il faut retenir" 

演示:http://jsbin.com/AsilIpo/1/

+0

它也可以,謝謝,但我不明白如何;-) –

+0

@FabienfromParis我建議你閱讀:http://api.jquery.com/contents/關於內容塊,那麼我們只過濾出所有與過濾方法相匹配的集合(查看nodeType是否爲text_node)。 – voigtan

相關問題