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

6

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

我想要选择:

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

而不是

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

我尝试使用:empty,但它与我的选项不兼容。非常感谢您的任何帮助。

你能发一下你尝试过的带有:empty的例子吗? - macwier
它们实际上不是空的。空格在那里。 - Raab
@Ravi:抱歉,我不小心发布了两次。接下来该怎么办? - laradev
@blessed Mod 很快就会关闭这个问题的.. 不用担心.. 但在发布问题之前请考虑搜索一下。 - Ravi Gadag
1
@Ravi:这两个问题都是我问的……几乎同时问的。 - laradev
5个回答

7
您可以使用 jQuery.filter() 来完成此操作。
var empty_p = $('p').filter(function(){
   return !$.trim($(this).text());
}).get();

这会返回只包含空格的元素吗? - doppelgreener

2
使用 jQuery 过滤器
$('p').filter(function () {
   return !$(this).text().trim();
});

这不是你使用trim()的方式。 - omma2289
1
@koala_dev 这不是 jQuery 的 trim。String.trim() - Artyom Neustroev
抱歉,对于混淆感到抱歉。 - omma2289
String.trim() 无法与 IE 兼容。 - Nauphal

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 FIDDLE

的中文翻译为:

{{链接1:JS FIDDLE}}


将无法处理空格和&nbsp; - Fabrício Matté
1
啊,我想阅读问题肯定会有所帮助。我已经做了一些更改。 - Seano666

0

您可以使用jQuery的filtertrim方法来实现这一点。
这里有一个可工作的示例:http://jsfiddle.net/snqSw/

$("p").filter(function(){
        $(this).text($.trim($(this).text())==""?"Works":$(this).text());
                            });

-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>

根据你想要对段落进行的操作,这可能或可能不是你想要的。如果不是,你需要更复杂的东西;具体细节将取决于你认为什么样的段落是“空白”的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接