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