我有以下 jquery 行
$('[genre*="'+$(this).attr('id')+'"]').fadeOut('fast');
它淡出其值包含该元素的 id 值的类型的元素。
但是我想要实现的是淡出剩余的元素,而不是匹配的元素。所以是这样的:
$('[genre*="'+$(this).attr('id')+'"]:not').fadeOut('fast');
在哪里放置“不”的正确位置。
谢谢
我有以下 jquery 行
$('[genre*="'+$(this).attr('id')+'"]').fadeOut('fast');
它淡出其值包含该元素的 id 值的类型的元素。
但是我想要实现的是淡出剩余的元素,而不是匹配的元素。所以是这样的:
$('[genre*="'+$(this).attr('id')+'"]:not').fadeOut('fast');
在哪里放置“不”的正确位置。
谢谢
你必须把它放在选择器的前面
$(':not([genre*="'+$(this).attr('id')+'"])').fadeOut('fast');
要获取更多信息和示例,请查看官方参考not
编辑
特别是该选择器会导致不良影响。你可以用这样的东西来修复它
$('[genre]').filter(':not([genre*="'+$(this).attr('id')+'"])').fadeOut('fast');
以下应该工作。我在这里编写了代码,但想法是选择所有具有“流派”属性的元素并检查该属性中是否不包含 id 值。如果不是这样,则淡出该元素。
var id = $(this).attr('id');
$('[genre]').each(function(){
if(!$(this).attr('genre').search(id))
$(this).fadeOut('fast');
});
编辑:顺便说一句,您正在搜索具有流派属性并且在这个包含一些关键字的 attirubte 上具有值的元素。如果您在此选择器上使用 not 运算符,您最终会得到除那些元素之外的所有元素,这些元素最终会出现在文档中的几乎所有元素中。据我所知,jQuery 中没有一个选择器类似于“具有“某些”属性和不包含“此值”的值”。