ExtJs Bug?选择器不能正常工作

时间:2014-02-14 16:50:39

标签: javascript 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/

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

1 个答案:

答案 0 :(得分:2)

我无法告诉你:first伪选择器应该如何表现。它不是CSS3标准的一部分,我认为它是jQuery引入的。 ExtJS显然似乎以某种方式解释它,但我在文档中找不到任何关于它的内容。

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

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

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