1

例如,原件p将是:

<p>
    <h1>I'm title</h1>
    This is some descriptions.
    <a class="classToExclude">The Link #1</a>
    <a>The Link #2</a>
</p>

我只想$('p').html() 排除h1anda.classToExclude
看起来像:

<p>
    This is some descriptions.
    <a>The Link #2</a>
</p>

仅供参考,当我使用选择器$('p').children().each()方法时,它只返回nodes下面的内容,而不是内部文本This is some descriptions。它不包括在内。所以我不能使用.children()选择器来循环。

4

3 回答 3

2
var val = $('div').clone();
$('h1, .classToExclude', val).remove();
var html = val.html();
alert(html);

http://jsfiddle.net/7SYFV/63/

.html() 似乎不适用于 <p> 元素。

于 2012-07-15T08:50:57.830 回答
2

您的 html 无效:

<p>
    <h1>I'm title</h1>
    This is some descriptions.
    <a class="classToExclude">The Link #1</a>
    <a>The Link #2</a>
</p>

被解释为:

<p></p>
<h1>I'm title</h1>
This is some descriptions.
<a class="classToExclude">The Link #1</a>
<a>The Link #2</a>
<p></p>

在谷歌浏览器、Firefox 和 Internet Explorer 中。

使用有效的 html,例如:

<div>
    <h1>I'm title</h1>
    This is some descriptions.
    <a class="classToExclude">The Link #1</a>
    <a>The Link #2</a>
</div>​

使用时效果很好

console.log( $('div').clone().find("h1,a.classToExclude").remove().end().html()) ​

http://jsfiddle.net/wVzVB/

于 2012-07-15T09:34:35.523 回答
1

您需要将该元素复制到一个附加的 jQuery 对象中,以便您可以使用.remove()不更改原始内容的情况下使用该函数。

要复制或克隆元素,您可以使用该clone()功能。一个你已经复制了你的元素,你可以开始删除所有不需要的元素 -

var elementCopy = $("p").clone();
elementCopy.remove("h1, a.classToExclude");

elementCopy.html()现在将包含您想要的元素。


请注意,这$("p")将选择页面中的所有 <p>元素。您可能需要考虑向您的标记添加一些额外的类,以便更容易准确地确定您想要处理的元素。

于 2012-07-15T08:55:58.197 回答