2014-02-14 98 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