6

如何使用 jQuery 选择所有空标签。

我要选择

<p></p>
<p style="display: block"></p>
<p> </p>
<p>     </p>
<p>&nbsp;</p>

并不是

<p>0</p>
<p>Test</p>

我试过了,:empty但它不适用于我的选择。非常感谢您对此的任何帮助。

4

5 回答 5

7

您可以使用jQuery.filter().

var empty_p = $('p').filter(function(){
   return !$.trim($(this).text());
}).get();
于 2013-08-26T05:10:09.683 回答
2

使用jQuery 过滤器

$('p').filter(function () {
   return !$(this).text().trim();
});
于 2013-08-26T05:10:52.417 回答
1
$(document).ready(function(){
    $("p").each(function(index){
        var html = $(this).html();
        html = filter(html, " ");
        html = filter(html, "&nbsp;");

        if ($(this).html() == ""){
            //YOUR CODE
        }
    });
});

function filter(string, char){
    while(string.indexOf(char) > 0){
        string.replace(char, "");
    }
}

JS小提琴

于 2013-08-26T05:19:23.840 回答
0

您可以使用 jquery过滤器修剪方法来执行此操作。
这是一个工作示例:http: //jsfiddle.net/snqSw/

$("p").filter(function(){
        $(this).text($.trim($(this).text())==""?"Works":$(this).text());
                            });
于 2013-08-26T05:23:39.540 回答
-1

另一种方法是使用正则表达式而不是trim()

$('p').filter(function () {
    return !/\S/.test( $(this).text() );
})

( JSFiddle )

请注意,这(以及基于 的所有其他解决方案$(this).text())也将匹配例如本段:

<p><a href="http://example.com">&nbsp;</a></p>

甚至:

<p><img src="http://example.com/image.gif"></p>

根据您要对段落执行的操作,这可能是您想要的,也可能不是您想要的。如果不是,您将需要一些更复杂的东西;详细信息将取决于您要考虑的确切内容是“空”段落。

于 2013-08-26T11:50:24.283 回答