2012-11-12 60 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查看我的编辑。 –

相关问题