如果PageHeaderDescription
不包含任何文字内容,那么我想隐藏它。用jquery可以吗?
<div class="PageHeaderDescription">
<h1>Accessories</h1>
<img border="0" src="" style="cursor: pointer; display: none;" id="EntityPic621">
</div>
这就是div与文字的相似之处:
<div class="PageHeaderDescription">
<h1>Accessories</h1>
<img border="0" src="" style="cursor: pointer; display: none;" id="EntityPic621">
This is the Accessories page, you can find stuff for the products!
</div>
答案 0 :(得分:2)
这很糟糕,因为我必须更深入地研究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();
当然是working demo
答案 1 :(得分:1)
$("PageHeaderDescription").each(function(i, val) {
if ($(this).text().trim() === "") {
$(this).hide();
}
});
答案 2 :(得分:1)
jQuery(document).ready(function(){ // alert(jQuery('.PageHeaderDescription').text()); var headerTxt = jQuery('.PageHeaderDescription h1').text(); //alert(headerTxt); if(jQuery.trim(jQuery('.PageHeaderDescription').text())==headerTxt ){ jQuery('.PageHeaderDescription').hide(); } });
答案 3 :(得分:1)
试试这个......
if( $('div.PageHeaderDescription').is(':empty') ) {
// Your code
}
答案 4 :(得分:1)
您将需要另一个函数来仅获取div中不在某些标记内的文本。当你在PageHeaderDescription
中直接使用.text()时,你也会获得h1的内部文本。有关.justText()
的更多信息,您可以看到HERE!
答案是:
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()
答案 5 :(得分:0)
$("#empty").click(function() {
alert($('#myDiv').is(':empty'));
});
或
$("div:empty").hide();
或
您可以使用:用于检查
if( $('#leftmenu').is(':empty') ) {
}
答案 6 :(得分:0)
首先为你分配一个id = Div。
<div class="PageHeaderDescription" id="PageHeaderDescription">
然后
$("#PageHeaderDescription").each(function(i, val) {
if ($(this).text().trim() === "") {
$(this).hide();
}
});
答案 7 :(得分:0)
这对我有用:
var clone = $(".PageHeaderDescription").clone(true);
clone.find('*').remove();
if (clone.text().trim() == '') $(".PageHeaderDescription").hide();
clone.remove();