jQuery选择&#34; .html&#34; <p>内部删除了一些元素?</p>

时间:2012-07-15 08:47:36

标签: jquery selector

例如原始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()h1a.classToExclude 。 将会是这样的:

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

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

3 个答案:

答案 0 :(得分:2)

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

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

.html()似乎不适用于&lt; p&gt;元件。

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

在Google Chrome,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/

答案 2 :(得分:1)

您需要将元素复制到其他jQuery对象中,以便在不改变原始内容的情况下使用.remove()函数。

要复制或克隆元素,您可以使用clone()函数。您已经复制了元素,可以开始删除所有不需要的元素 -

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

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


请注意,$("p")会在您的网页中选择所有 <p>元素。您可能需要考虑在标记中添加一些其他类,以便更准确地确定您想要处理的元素。