如何只选择div中的文本包含jQuery中的另一个div?

时间:2013-10-18 14:09:22

标签: javascript jquery css jquery-selectors

我有这段代码:

<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.

请帮忙吗?谢谢!

3 个答案:

答案 0 :(得分:5)

您可以克隆,删除子项并获取文本。见下文,

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

注意:如果您不想保留原始内容,则无需克隆。

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

答案 1 :(得分: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();

答案 2 :(得分:0)

您可以使用contents()并过滤掉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/