2010-06-02 100 views
3

我試圖選擇除了包含foo或這些字的ID之外的所有<input>元素。我如何使用ExtJS 2.3.0來做到這一點?我試過以下內容:使用ExtJS選擇不包含特定ID的元素

Ext.query("select,input:not([id*=foo][id*=bar])", "SomeForm");` 

...但它不起作用。在他們foo剔除標識似乎很好地工作:

Ext.query("select,input:not([id*=foo])", "SomeForm")` 

我只是不知道如何添加第二個ID字符串。有任何想法嗎?

回答

3

不知道如何選擇這樣的結合,但我認爲,如果你使用的過濾功能可以過濾掉第一個查詢:

Ext.DomQuery.filter(Ext.query('input:not([id*=foo])','SomeForm'),'input:not([id*=bar])'); 

請注意,我只是玩了更多的這個功能和該功能:

Ext.query('input:not([id*=foo]):not([id*=bar])'); 

但t他給了我你mentionned同樣的錯誤:

Ext.query('input:not([id*=foo]):not([id*=bar])','SomeForm'); 

所以在我看來,像ExtJS的查詢功能中的錯誤,當你通過與多個屬性選擇一個特定的根。

+0

This works。如果我想排除除了'foo'和'bar'之外,還有包含'baz'的ID?另外,我似乎得到相同的錯誤(錯誤解析選擇器),當不傳遞一個特定的根與'Ext.query(「輸入:不(([id * = foo]):不([id * = bar]) 「);'記住我被限制在Ext 2.3.0。 – pmdarrow 2010-06-02 19:43:09

+0

對不起,我實際上閱讀3.2 ...如果你得到相同的錯誤,我會認爲它是2.3版本中的錯誤,或者它可能只是不被支持。你應該能夠在前面的'Ext.Domquery.filter'調用的結果上調用'Ext.DomQuery.filter'等等。如果你有很多這些,我建議你創建一個你自己的函數來接收一個要排除的ID數組,做第一個'query'調用,然後循環通過ID數組來排除並根據需要調用'filter' 。除非有人知道使用ExtJS更好的方式,那就是我會做的。 – SBUJOLD 2010-06-02 19:58:58

+0

我剛剛結束了一個循環,就像你說的,但這個答案也適用,所以我會將其標記爲已接受。 – pmdarrow 2010-06-03 12:17:52

1
Ext.query("select,input:not([id*=foo]):not([id*=bar])", "SomeForm") 
+0

這給了我在FF 3.6.3中出現以下錯誤:'解析選擇器時出錯,解析失敗於'):not([id * = bar]「'。也許ExtJS不喜歡鏈接僞選擇器? – pmdarrow 2010-06-02 18:09:03

+0

我注意到了一個開放的「選擇和不關閉」,請看看是否有幫助 – 2010-06-02 18:18:23

+0

看到我對你原來的帖子的評論sushil – pmdarrow 2010-06-02 18:42:00

1

Ext.query("select,input:not([id*=foo]):not([id*=bar])", "SomeForm")`試試這個

+0

與Ben相同的答案 - 請參閱我對他的評論 – pmdarrow 2010-06-02 18:10:21

+0

注意到結尾「請嘗試 – 2010-06-02 18:19:37

+0

我在第一次嘗試之前修正了打印錯誤,但沒有解決任何問題,下面是我使用的確切線: 'Ext.query(「input:not([id * = foo]):not([id * = bar])」,「SomeForm」);' – pmdarrow 2010-06-02 18:22:30