隐藏div,如果它不包含文本

如果PageHeaderDescription包含文本内容,那么我想隐藏它。 用jquery有可能吗?

 

Accessories

这就是div与文本的相似之处:

 

Accessories

This is the Accessories page, you can find stuff for the products!

这会变得很糟糕,因为我必须在DOM中比我想要的更深入,但是可以满足您的需求:

 $('div.PageHeaderDescription').each(function(i,e){ var txt = ''; for (var c = 0; c < e.childNodes.length; c++){ if (e.childNodes[c].nodeType===3){ txt += e.childNodes[c].data; } } if (txt.trim().length===0){ $(e).hide(); } }); 

再次,hacky但有效。 你必须记住,甚至在DOM中都考虑了空白,所以用“没有nodeType === 3个元素”检查/过滤是不够的。 相反,您连接所有文本,然后修剪它以删除空格并获得长度。


跟进自定义选择器:

 (function($){ $.expr[':'].notext = function(obj, index, meta, stack){ var txt = ''; for (var c = 0; c < obj.childNodes.length; c++){ if (obj.childNodes[c].nodeType===3){ txt += obj.childNodes[c].data; } } return (txt.trim().length===0); }; })(jQuery); $('div.PageHeaderDescription:notext').hide(); 

当然还有工作演示

 $("PageHeaderDescription").each(function(i, val) { if ($(this).text().trim() === "") { $(this).hide(); } }); 

试试这个…

 if( $('div.PageHeaderDescription').is(':empty') ) { // Your code } 
  jQuery的(文件)。就绪(函数(){

    // alert(jQuery('。PageHeaderDescription')。text());

     var headerTxt = jQuery('。PageHeaderDescription h1')。text();
     //警报(headerTxt);    

         if(jQuery.trim(jQuery('。PageHeaderDescription')。text())== headerTxt){
         jQuery的( 'PageHeaderDescription。')隐藏();
     } 


 });

您将需要另一个函数来仅获取div中不在某些标记内的文本。 当您在PageHeaderDescription直接使用.text()时,您也将获得h1的内部文本。 有关.justText()更多信息,您可以在这里看到!

答案是:

 jQuery.fn.justText = function() { return $(this).clone().children().remove().end().text(); }; $('document').ready(function(){ if ($('.PageHeaderDescription').justText().trim().length == 0) { $('.PageHeaderDescription').remove(); // If you want to hide, use .hide() } } ); 

PS。:帮助您在.hide()和.remove()之间进行选择

– .hide()的参考

– .remove()的参考

  $("#empty").click(function() { alert($('#myDiv').is(':empty')); }); 

要么

 $("div:empty").hide(); 

要么’

你可以用:用于检查

 if( $('#leftmenu').is(':empty') ) { } 

首先为你分配一个id = Div。

 

然后

 $("#PageHeaderDescription").each(function(i, val) { if ($(this).text().trim() === "") { $(this).hide(); } }); 

这对我有用:

 var clone = ​$(".PageHeaderDescription").clone(true);​​​​​​​​​ clone.find('*').remove(); if (clone.text().trim() == '') $(".PageHeaderDescription").hide(); clone.remove();