从jQuery集合中删除注释和文本节点

时间:2011-10-19 10:15:51

标签: javascript jquery comments textnode

$html = $("<!-- comment --> <p>text</p>");

创建一个像这样的jQuery集合

$( [the comment], [text node], p )

如何才能访问该段落? .find(“p”)返回一个空集合

而且,对于额外的积分,

$html = $("<p>text</p>");

创建一个像这样的jQuery集合

$( p )

是否有一种失败的安全方式来获取p,只有p,无论注释是否存在都有效?

4 个答案:

答案 0 :(得分:7)

最简单的方法是使用filter和通用选择器*,它匹配所有元素

$html = $("<!-- comment --> <p>text</p>").filter('*');

答案 1 :(得分:1)

var p = $html.filter(function() { return this.nodeType === 1; });

jsFiddle

答案 2 :(得分:0)

试试这个demo。也许这并不是你将如何使用它,但你明白了。

<div class="text">
    <!-- comment -->
    <p>text</p>
</div>

var html = $('.text').html();
html = $.trim(html.replace(/<!--(.*?)-->/ig, ''));
alert(html);

答案 3 :(得分:0)

一种方法是按$html = $("<!-- comment --> <p>text</p>");中的索引获取,您可以使用$($html[2])获取p标记。

OR

$html = $("<!-- comment --> <p>text</p>");
$target = new Object();
for(key in $html){
    if(typeof $html[key] ===  'object' && $html[key].localName === 'p')
        $target = $html[key];
}