2012-03-20 35 views
1

我有这样的设置。使用jquery不是运算符

 var element = $(".module-panel", this.el); 
     $('.module-panel:not('+element+')').hide(); 

我试图做的是隐藏与不同之处在于存储了var元素中的一个类.module面板的所有div。

+0

我只是把它们全部隐藏起来,然后''element.show()' – ianbarker 2012-03-20 15:10:57

+1

'$('。module-panel')。not(element)' – zzzzBov 2012-03-20 15:11:14

回答

1

做到这一点的最简单的方法是使用。不()

var element = $(".module-panel", this.el); 
$('.module-panel').not(element).hide(); 

使用:否()是完全可能的,以及,尽管差异是微乎其微,如果有多个要素你是匹配的,它可以有利于CSS3选择器:not()。

jQuery创建一个方法 .not()过滤掉传递给它的任何元素。 CSS3有一个伪选择器:not()它允许浏览器做这项工作,使其稍快一些,但不是多功能的。

测试结果在这里:http://jsfiddle.net/iredmedia/jPNYK/

原因查询不起作用是因为你concattenating一个jQuery对象转换成一个查询字符串。为了使您的查询工作,你必须传递一个特定元素的ID /类,如

var element = '.doNotReturn', 
    excluded = $('#eltFamily:not(' + element + ')').nextMethod(); 

希望这有助于你明白:不是()VS。不是();

3

可以使用.not()

var element = $(".module-panel", this.el); 
$('.module-panel').not(element).hide(); 

您需要的jQuery 1.4或更高,因为元素是一个jQuery对象:

。不是(jQuery对象)

jQuery对象 - 现有jQuery对象匹配当前元素集合。