2012-11-12 99 views
0

可能重複:
How do I select text nodes with jQuery?處理標籤外部文本的正確方法是什麼?

什麼是正確的方式來處理文本

我嘗試了所有方法的標籤之外,但都失敗了

而且我對此進行了實驗

<script> 

    $(function(){ 
    var A = $(".A").text(); 
    var B = $(".B").text(); 
    var C = $(".C").text(); 
    var D = $(".D").text(); 
    $("#BD").text(A+B+C+D); 
     }); 

    </script> 

    <body> 

    <div> 
    <span class="A"></span>6 
    <span class="B"></span>8 
    <span class="C"></span>3 
    <span class="D"></span>9 
    </div> 

    <div id="BD"></div> 
    </body> 

除了這

<script> 

$(function(){ 
var A = $(".A").text(); 
var B = $(".B").text(); 
var C = $(".C").text(); 
var D = $(".D").text(); 
    alert(A+B+C+D); 
}); 

</script> 

但他們都沒有工作

我怎樣才能正確地收集的數字?

+1

是否有一個原因文本不在標籤?這裏的HTML結構看起來很不尋常。 –

+0

你的函數$(「.A」).text()只能獲得ID爲'A'的元素內的文本 – Epsil0neR

回答

2

你可以克隆div和刪除跨度元素的內部,然後用.text()檢索格文本,只是做:

$('#BD').text($('.A').parent().clone().children('span').remove().end().text()); 

見工作demo

+0

無論如何,如果你需要一切,這個解決方案可能會更好,更短。不是,如果他們需要分開。 –

+0

謝謝 但我只想要一個 的 如何? – khaled

+0

@khaled對不起,我不明白你的問題,你能改說嗎? – Nelson

4

修訂ANSWER

http://jsfiddle.net/BramVanroy/dS3ab/2/

由於從James

var a = $("div").contents().filter(function() { 
    return this.nodeType == 3; 
}).text(); 

$("#BD").text(a);​ 

注意借用,這種解決方案只能拿到DIV標籤內的所有textNodes!

+1

這是錯誤的。 'next'選擇兄弟元素,而不是textNodes,如果你看到你的小提琴'#BD'不包含任何東西。 – undefined

+0

@undefined你是對的,我錯了。 –

+0

@undefined查看我的編輯。 –

相關問題