2014-02-14 70 views
0

看来,这个选择是不是在ExtJS的工作:ExtJs错误?选择工作不正常

Ext.select('.serviceGridItem:not(:first)') 

它选择的所有项目,而这应该只选择最后三个(有四个总)。查看下面链接的jsfiddle并查看结果的控制台。

这是结果:

Ext.select('.serviceGridItem') 
    constructor {elements: Array[4], el: constructor, self: function, superclass: Object, config: emptyFn…} 
Ext.select('.serviceGridItem:first') 
    constructor {elements: Array[1], el: constructor, self: function, superclass: Object, config: emptyFn…} 
Ext.select('.serviceGridItem:not(:first)') 
    constructor {elements: Array[4], el: constructor, self: function, superclass: Object, config: emptyFn…} 

下面是HTML:

<div class="x-component x-window-item x-component-default" id="dataview-1049" tabindex="-1" style=""> 
    <a href="#" class="serviceGridItem">Legal Compliance</a> 
    <a href="#" class="serviceGridItem">Departure Package</a> 
    <a href="#" class="serviceGridItem">House Search</a> 
    <a href="#" class="serviceGridItem">Language Training</a> 
</div> 

中的JavaScript:

Ext.onReady(function() { 
    console.log(Ext.select('.serviceGridItem')); 
    console.log(Ext.select('.serviceGridItem:first')); 
    console.log(Ext.select('.serviceGridItem:not(:first)')); // should return Array[3] not Array[4] 
}); 

的的jsfiddle(看看你的控制台的结果):

http://jsfiddle.net/k4ggq/5/

这是一个错误还是有我做错了什么?

回答

2

我真的不能告诉你:first伪选择器应该如何表现。这不是CSS3标准的一部分,我认为它是与jQuery一起推出的。 ExtJS似乎以某种方式解释它,但我在文档中找不到任何关于它的信息。

但是,你可以尝试使用CSS3 :first-child选择:

Ext.select('.serviceGridItem:not(:first-child)'); 

这似乎在你的提琴工作得很好:http://jsfiddle.net/k4ggq/6/

+0

谢谢,这总比没有好。但是,我发布这个bug的原因是因为我发现另一个bug,因此':contains()'似乎根本不起作用。你对这个jsfiddle有什么看法? http://jsfiddle.net/k4ggq/7/ – user1477388

+1

同样在这里,不是真正的CSS规范的一部分([再]](http://www.w3.org/TR/selectors/#content-selectors))。但是,它似乎工作,如果你省略引号'“”'([Fiddle](http://jsfiddle.net/k4ggq/8/)) – matt

+0

非常好!我从来没想过这点。 – user1477388