2012-03-20 25 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對象匹配當前元素集合。