2010-06-02 50 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