0

画像に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/

4

5 に答える 5

4
$("div.PageHeaderDescription img[src='']").parent().hide();

img空で検索しsrc、その親を非表示にしdiv.PageHeaderDescriptionます;

デモ

また

$("div.PageHeaderDescription").has("img[src='']").hide();

空のこれを非表示div.PageHeaderDescriptionにします。imgsrc

デモ

于 2012-07-19T13:58:36.730 に答える
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();
    }
});
于 2012-07-19T13:58:04.613 に答える
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 がページにあり、非表示にする必要があるかどうかを確認するたびに、同じスクリプトを実行できます。

于 2012-07-19T14:06:41.710 に答える
1

必要以上に複雑にする必要はありません.filter()

var phd = $("div.PageHeaderDescription");    
if ($('img:not([src])',phd).length || $('img[src=""]',phd).length) {
    phd.hide();
}

</p>

に属性imgがないかどうか、または属性がある場合は空白かどうかを確認します。src

フィドル: http://jsfiddle.net/iambriansreed/G6bPu/

于 2012-07-19T14:05:00.367 に答える
0

すでに述べたように、jQuery オブジェクトは常に に評価されtrueます。ただし、ステートメントはまったく必要ありませんif。要素のセットを「空の」画像を持つ要素に減らすだけです。その.filter()目的は次のとおりです。

$("div.PageHeaderDescription").filter(function() {
    return $(this).find("img[src='']").length > 0;
}).hide();
于 2012-07-19T14:00:54.327 に答える