2014-02-14 57 views
0

我有jQuery中下面的代码,当您文本输入到一个文本框(#searchServices),它会淡出不包含文本链接,它会在不含该文本链接褪色。高级选择在ExtJS的

我怎样才能做到这一点的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(); 

回答

1

用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(); 
    } 
} 

这应该隐藏包含“法律”,在它的价值

+0

相同的结果之一。请注意,我并不是想要获取所有元素,只是包含HTML中某些文本的元素。 – user1477388

+0

对可能的解决方法请参见编辑 – lascort

+0

由于这是有帮助的。我会接受这个作为一个答案,但它吮吸的是ExtJS的倾斜只是做'Ext.query隐藏();(”“+ c.getValue()+ '”))' serviceGridItem:没有(包含(”)。 '。看来ExtJS不支持这样的嵌套选择器。我张贴另一个问题有一个更具体的例子,这里的jsfiddle http://stackoverflow.com/questions/21785001/extjs-bug-selector-not-working-properly – user1477388