ExtJS中的高级选择器



我在jQuery中有以下代码,当您在文本字段(#searchServices)中输入文本时,它将淡出不包含该文本的链接,并且会在包含文本的链接中淡出。

如何在 ExtJS 中执行此操作?

$('#searchServices').keyup(function () {
    if ($(this).val().trim() != '') {
        $('.serviceGridItem:not(:contains("' + $(this).val() + '"))').fadeOut();
        $('.serviceGridItem:contains("' + $(this).val() + '")').fadeIn();
    }
    else {
        $('.serviceGridItem').fadeIn();
    }
})

现在,我有我的文本字段和我的听众,如下所示:

xtype: 'textfield',
enableKeyEvents: true,
listeners: {
    keyup: function(c) {
        console.log(c.getValue());
    }
}

我的(生成的)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>

编辑:我已经尝试过这个,但我得到错误,说"意外的标识符"。

Ext.query('.serviceGridItem:not(:contains("' + c.getValue() + '"))').hide();

尝试使用 Ext.dom.Query.select 代替。

例如。。。

var dom = Ext.dom.Query.select('.serviceGridItem');
for(var i=0;i<dom.length;i++){
    var el = Ext.get(dom[i]);
    if(el.dom.outerText.indexOf("Legal") != -1){
        el.hide();
    }
}

这个应该隐藏其值中包含"合法"的那个

最新更新