隐藏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();