从DIV反转文本选择

时间:2011-12-05 14:31:50

标签: jquery jquery-selectors

我有几个div个元素:

<div class="newsContainer">
    <div class="deleteBoxIcon">
        <img alt="Delete" src="close_mark.png">
    </div>
    <div class="newsImage">
        <img alt="NewsImage" src="umbrella.png">
    </div>
    <div class="newsContent">
        <b>Here goes a title</b><br>
        Here goes some content.
    </div>
</div>

根据某些条件,我检索其中一个div并将其保存到一个对象(draggable)中,现在我需要将标题和内容文本提取到输入控件。

获得标题对我来说并不困难,我只是这样做:

var title = $('.newsContent > b', $(draggable)).text();

但对我而言,困难的部分是获取内容,我已经尝试了这个但是无法正常工作因为它会检索所有文本(包括标题):

var content = $(':not(.newsContent > b)', $(draggable)).text();

希望你能帮助我只得到像这样的div的内容部分。

3 个答案:

答案 0 :(得分:1)

试试这个:

var title = $('.newsContent > b').text();
var content = $.trim($('.newsContent').text().replace(title, ""));

Example fiddle

答案 1 :(得分:0)

如果你只想要最后一点文字:

$('.newsContent', draggable).contents().last()[0].data;

  • .contents()方法为您提供所有子节点,包括文本节点

  • .last()为您提供最后一个节点,即您想要的节点

  • [0]从jQuery对象中提取文本节点

  • .data为您提供节点

  • 的文字内容

或者您可以将[0].data替换为.text()

$('.newsContent', draggable).contents().last().text();

答案 2 :(得分:0)

您应该更改标记,以便更轻松地编写JavaScript。包装您的标记,排除另一个标记中的标题,然后选择它。

示例:

<div class="newsContent">
    <h2>Here goes a title</h2>
    <div class="newsDesc">
        <p>Here goes some content.</p>
    </div>
</div>

然后,使用$('.newsContent .newsDesc', $(draggable)).text();