我正在尝试过滤我的图像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();
}
});
任何帮助都会很棒!!!
答案 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;
});