Ext.DomQuery.select如果selector包含逗号,则会出现问题

时间:2014-02-04 13:51:28

标签: extjs extjs4 extjs3 extjs4.2

我正在尝试根据选择器从xml查询节点,如果我的select on中有逗号,则domquery会抛出错误!

问题: Ext.DomQuery.select(“root / I [a ='abc,d']”,resp.responseXML);

以下是我的示例代码:

Ext.onReady(function () {
    Ext.Ajax.request({
        url : 'sample.xml',
        success : function (resp, e) {
            //var a = Ext.DomQuery.select("root/I[a='abc']", resp.responseXML);
            var b = Ext.DomQuery.select("root/I[@a='abc']", resp.responseXML);
            var c = Ext.DomQuery.select("root/I[a='abc'd']", resp.responseXML);
            var d = Ext.DomQuery.select("root/I[a='abc@d']", resp.responseXML);
//All the above are working fine

//Below line is not at all working
            var d = Ext.DomQuery.select("root/I[a='abc,d']", resp.responseXML);
// throwing error as : 'Error parsing selector, parsing failed at "' + path + '"'; at line 1126 in ext-all-debug.js 

        },
        failure : function (resp, e) {
            debugger;
        }
    });
});

我的xml如下:

<root>
    <I a="abc"/>
    <I a="abc'd"/>
    <I a="abc@d"/>
    <I a="abc,d"/>
    <I a="abc!d"/>
</root>

我在代码中使用了这个选择器很多地方,这只是一个示例。此选择器(此处“abc,d”)始终来自变量,它是动态的。没有人知道逗号何时到来以及何时没有。如何处理这个问题?有没有解决这个问题?

1 个答案:

答案 0 :(得分:0)

这不行。我已经尝试了很多。最后决定在domquery中使用开头并遍历结果数组以找到完全匹配。请参阅以下示例

var d = Ext.DomQuery.select("root/I[a^='abc']", resp.responseXML);
var selectedNode = null;
for(var index = 0; index < d.length; index++){
    if(d[index].getAttribute('a') == 'abc,d'){
        selectedNode = d[index];
    }
}
console.log(selectedNode);

如果您希望完全匹配在数组中,请使用以下示例

var selectedNode = new Array();
for(var index = 0; index < d.length; index++){
    if(d[index].getAttribute('a') == 'abc,d'){
        selectedNode.push(d[index]);
    }
}
console.log(selectedNode);