1

我有以下 jquery 行

$('[genre*="'+$(this).attr('id')+'"]').fadeOut('fast');

它淡出其值包含该元素的 id 值的类型的元素。

但是我想要实现的是淡出剩余的元素,而不是匹配的元素。所以是这样的:

$('[genre*="'+$(this).attr('id')+'"]:not').fadeOut('fast');

在哪里放置“不”的正确位置。

谢谢

4

2 回答 2

5

你必须把它放在选择器的前面

$(':not([genre*="'+$(this).attr('id')+'"])').fadeOut('fast');

要获取更多信息和示例,请查看官方参考not

编辑

特别是该选择器会导致不良影响。你可以用这样的东西来修复它

$('[genre]').filter(':not([genre*="'+$(this).attr('id')+'"])').fadeOut('fast');​​​​​
于 2012-09-27T12:25:25.760 回答
2

以下应该工作。我在这里编写了代码,但想法是选择所有具有“流派”属性的元素并检查该属性中是否不包含 id 值。如果不是这样,则淡出该元素。

var id = $(this).attr('id');

$('[genre]').each(function(){
  if(!$(this).attr('genre').search(id))
    $(this).fadeOut('fast');
}); 

编辑:顺便说一句,您正在搜索具有流派属性并且在这个包含一些关键字的 attirubte 上具有值的元素。如果您在此选择器上使用 not 运算符,您最终会得到除那些元素之外的所有元素,这些元素最终会出现在文档中的几乎所有元素中。据我所知,jQuery 中没有一个选择器类似于“具有“某些”属性和不包含“此值”的值”。

于 2012-09-27T12:38:34.357 回答