我不能使用:
$('div:empty')
因为div可能会有空格,如果它没有内容或只有空格,我想把它删除。
这将返回所有没有文本内容(除了由.trim
删除的空格或其他字符,如换行符)的div
元素:
var emptyDivs = $("div").filter(function() {
return $.trim($(this).text()) === "";
});
更新 - 基于评论
如果问题中的任何
img
元素),则上述方法将在“空”元素集合中包括它们。要排除它们,您可以使用以下方法:var emptyDivs = $("div").filter(function() {
return $.trim($(this).text()) === "" && $(this).children().length === 0;
});
$.expr[':'].nocontent = function(obj, index, meta, stack){
// obj - is a current DOM element
// index - the current loop index in stack
// meta - meta data about your selector
// stack - stack of all elements to loop
// Return true to include current element
// Return false to explude current element
return !($.trim($(obj).text()).length) && !($(obj).children().length)
};
那么您的使用方式将会是:
$('div:nocontent').remove();
if (!$.trim($("div").text()).length && !$("div").children().length)
children
长度检查是为了确保您不会将没有文本但有其他元素(例如图像)的div视为为空。$('div:empty').each(function(){
if($.trim($(this).html()).length == 0){
//do what you want here...
}
});
if ($.trim($('div').html()) == '') { $("div").remove(); }
$.trim($("<div>").append($("<img>").attr("src", "test")).text())
- Alex Turpin