如何使用 jQuery 选择所有空标签。
我要选择
<p></p>
<p style="display: block"></p>
<p> </p>
<p> </p>
<p> </p>
并不是
<p>0</p>
<p>Test</p>
我试过了,:empty
但它不适用于我的选择。非常感谢您对此的任何帮助。
您可以使用jQuery.filter()
.
var empty_p = $('p').filter(function(){
return !$.trim($(this).text());
}).get();
使用jQuery 过滤器:
$('p').filter(function () {
return !$(this).text().trim();
});
$(document).ready(function(){
$("p").each(function(index){
var html = $(this).html();
html = filter(html, " ");
html = filter(html, " ");
if ($(this).html() == ""){
//YOUR CODE
}
});
});
function filter(string, char){
while(string.indexOf(char) > 0){
string.replace(char, "");
}
}
您可以使用 jquery过滤器和修剪方法来执行此操作。
这是一个工作示例:http: //jsfiddle.net/snqSw/
$("p").filter(function(){
$(this).text($.trim($(this).text())==""?"Works":$(this).text());
});
另一种方法是使用正则表达式而不是trim()
:
$('p').filter(function () {
return !/\S/.test( $(this).text() );
})
( JSFiddle )
请注意,这(以及基于 的所有其他解决方案$(this).text()
)也将匹配例如本段:
<p><a href="http://example.com"> </a></p>
甚至:
<p><img src="http://example.com/image.gif"></p>
根据您要对段落执行的操作,这可能是您想要的,也可能不是您想要的。如果不是,您将需要一些更复杂的东西;详细信息将取决于您要考虑的确切内容是“空”段落。