5

画像 src で特定の単語 (「画像なし」) をフィルター処理しようとしています。true が返された場合は、その特定の画像を削除して残りの画像を保持したいと考えています。

これは私の出力です:

<div class="product">
  <div class="image">
   <img src="mytee-red.jpg">
   <img src="mytee-blue.jpg">
   <img src="mytee-black.jpg">
   <img src="mytee-no-image.jpg">
 </div>
</div>

これは私がこれまでに試したことですが、うまくいかないようです:

var keyword = "no-image";
 $(".product .image img").filter(function(index) {
    if ($(this).attr("src") == keyword) {
        $(this).remove();
    }
});

どんな助けでも素晴らしいでしょう!!!

4

5 に答える 5

6

これを単一のコマンドに単純化できます-

$(".product .image img[src*='no-image']").remove();

jQuery 属性の含むセレクターは、属性内の任意の場所にテキスト "no-image" を含む正確な要素を特定するのに役立ちますsrc

これは、値に対して一致する jQuery 属性セレクターの中で最も寛大です。セレクターの文字列が要素の属性値内のどこかにある場合、要素を選択します。

于 2012-09-17T00:16:51.387 に答える
4
$('.product .image img[src*="no-image"]').remove();

http://api.jquery.com/attribute-contains-selector/

正規表現は必要ありません。

于 2012-09-17T00:17:18.013 に答える
3

あなたの例によれば、match()代わりに使用する必要があります==

var keyword = "no-image";
 $(".product .image img").filter(function(index) {
    if ($(this).attr("src").match(keyword)) {
        $(this).remove();
    }
});

<img src="mytee-no-image.jpg">キーワードにマッチしたので削除したいとしますno-image

于 2012-09-17T00:18:08.203 に答える
3

他の回答はより良いアプローチを示唆していますが、次のようなデモンストレーションがfilter()可能です:

var keyword = "no-image";
 $(".product .image img").filter(function(index) {
    return $(this).attr("src").match(keyword);
}).remove();
于 2012-09-17T00:23:02.613 に答える
1

フィルターは、渡された関数が true を返すアイテムのみを保持します。フィルター関数内でそれらを削除しようとする代わりに、単に false を返します。

.filter( function(index) ): 一致した要素のセットを、セレクターに一致するか関数のテストに合格する要素に減らします。

var keyword = "no-image";
 $(".product .image img").filter(function(index) {
    return $(this).attr("src") != keyword;
});
于 2012-09-17T00:17:16.027 に答える