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 属性包含选择器将帮助您精确定位您想要在src属性中的任何位置包含文本“no-image”的元素。

这是匹配值的最慷慨的 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 回答