使用jquery过滤图像src中的单词

时间:2012-09-17 00:13:30

标签: jquery regex string filter

我正在尝试过滤我的图像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();
    }
});

任何帮助都会很棒!!!

5 个答案:

答案 0 :(得分:6)

您可以将其简化为单个命令 -

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

jQuery attribute contains selector将帮助您在src属性中的任何位置精确定位包含文本“无图像”的确切元素。

  

这是匹配的最慷慨的jQuery属性选择器   反对价值。如果选择器的字符串,它将选择一个元素   出现在元素属性值的任何位置。

答案 1 :(得分:4)

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

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

不需要正则表达式。

答案 2 :(得分: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

匹配

答案 3 :(得分:3)

其他答案提出了更好的方法,但filter()的演示可能是:

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

答案 4 :(得分:1)

Filter只保留传递函数返回true的项。不要试图在过滤器函数中删除它们,只需返回false。

  

.filter(function(index)):将匹配元素集合减少到与选择器匹配的元素或通过函数测试。

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