如果图像包含NO src,那么我想隐藏div.PageHeaderDescription
<div class="PageHeaderDescription">
<h1>Bistro 300</h1>
<img border="0" src="images/Category/large/469.jpg" id="EntityPic621">
This is some text
</div>
为此,我使用了:
if ($("div.PageHeaderDescription img").filter("[src='']")) {
$("div.PageHeaderDescription").hide();
}
但是如果你将src路径放入图像中,jquery仍会隐藏div.PageHeaderDescription
,这是错误的。如果有图像src,它需要是可见的。
以下是我的示例:http://jsfiddle.net/dfasd/1/
答案 0 :(得分:4)
$("div.PageHeaderDescription img[src='']").parent().hide();
使用空img
查找src
并隐藏其父div.PageHeaderDescription
;
<强> DEMO 强>
OR
$("div.PageHeaderDescription").has("img[src='']").hide();
隐藏div.PageHeaderDescription
,其中img
为空src
。
<强> DEMO 强>
答案 1 :(得分:3)
filter()
返回一个jQuery对象,无论元素是否匹配,它始终是真实的。
您应该做的是检查返回对象的length
属性;
if ($("div.PageHeaderDescription img").filter("[src='']").length) {
$("div.PageHeaderDescription").hide();
}
虽然你可以将其缩短为;
if ($("div.PageHeaderDescription img[src='']").length) {
$("div.PageHeaderDescription").hide();
}
但如果您在页面上有多个div.PageHeaderDescription
,那么您应该这样做;
$("div.PageHeaderDescription").each(function () {
var self = $(this);
if (self.find('img[src=""]').length) {
self.hide();
}
});
答案 2 :(得分:2)
如果您想在页面加载时执行此操作,可以使用以下代码:
$("div.PageHeaderDescription img") // search for all img's inside a div...
.filter("[src='']") // get only ones with no src
.parents("div.PageHeaderDescription") // get their parent elements
.hide(); // hide then
或者,每次要检查是否有任何没有src的img在页面中并且必须隐藏时,您可以运行相同的脚本。
答案 3 :(得分:1)
不需要使其比使用.filter()
更复杂。
var phd = $("div.PageHeaderDescription");
if ($('img:not([src])',phd).length || $('img[src=""]',phd).length) {
phd.hide();
}
我检查img
是否没有src
属性,或者它是否具有属性我检查它是否为空。
答案 4 :(得分:0)
如前所述,jQuery对象始终计算为true
。但是您根本不需要if
语句,只需将元素集减少为具有“空”图像的元素即可。这就是.filter()
的用途:
$("div.PageHeaderDescription").filter(function() {
return $(this).find("img[src='']").length > 0;
}).hide();