Jquery选择器为空div

时间:2013-01-07 15:32:17

标签: jquery jquery-selectors

如何选择只有一个空格字符的空div和div,ej:

EJ: 一个jquery规则选择器,用于选择:

<div class="thumbnails"></div>
<div class="thumbnails"> </div>

但不要选择这个:

<div class="thumbnails">Lorem ipsum amet</div>

我试过这个

$('.thumbnails:empty').css('background-color', "#f0f");

并且可以正常使用:

<div class="thumbnails"></div>

但不选择这种情况(注释空格字符):

<div class="thumbnails"> </div>

测试:http://jsbin.com/ozohak/1/edit

5 个答案:

答案 0 :(得分:4)

使用filter功能检测没有文字的元素

$('.thumbnails').filter(function(i,v){
    return $.trim($(v).text()).length == 0;
}).css('background-color', "#f0f");

http://jsbin.com/ozohak/5/edit

编辑:

如果这是您的要求,您也可以使用过滤功能选择空元素和一个空格

$('.thumbnails').filter(function(i,v){
    return $(v).text() == '' || $(v).text() == ' ';
}).css('background-color', "#f0f");

http://jsbin.com/ozohak/10/edit

答案 1 :(得分:4)

您可以编写自己的Jquery选择器,并检查修剪后的文本(请参阅http://jsbin.com/ozohak/12/edit

$.expr[':'].blank = function(obj){
  return obj.innerHTML.trim().length === 0;
};

$('.thumbnails:blank').addClass('selected');

编辑:为了避免IE8及更低版本中的问题:

$.expr[':'].blank = function(obj){
  return !$.trim($(obj).text()).length;
};

$('.thumbnails:blank').addClass('selected');

答案 2 :(得分:1)

您可以使用带有正则表达式的filter()来确保text()为空:

$('.thumbnails')
    .filter(function() {
        return $(this).text().replace(/\W/gi, '') == '';
    })
    .addClass('selected');

Updated example

请注意,如果要在div中允许HTML元素,也可以与html()进行比较。

答案 3 :(得分:-1)

没有选择器可以检查空白内容,但这里可能有所帮助:

$('div').each(function(i,e) {
  if ($(e).html().trim() == "")
    $(e).html("");
});

$('.thumbnails:empty').addClass('selected');

问候。

答案 4 :(得分:-2)

您可以使用以下代码

$('*').each(function() {
         if ($(this).text() == "") { // you can change this to whatever #ex: char length
                   //Do Something
         }
});