JQuery XML查找属性不敏感的案例

时间:2013-11-25 17:58:37

标签: javascript jquery xml

我有一个搜索字段,如果我输入电路板,它只会返回任何内容,但如果我输入 Board 则会返回。 我开始搜索并发现与HTML不同,XHTML区分大小写....

示例XML

<prop-db>
 <prop caption="Sign Board A" />
</prop-db>

JS片段

switch (last_search) {
    case "show_all":
        load('prop-db > prop');
        break;
    default:
        load('prop-db > prop[caption*="{0}"]'.format(last_search));
}

默认情况下会尝试查找用户在search_field中输入的内容。 这就是load函数如何获取带有标题的元素:

if (!search) {
    data2 = $(data).find('prop-db > prop').slice(-18);
} else { //gets executed when search equals true (when load is called with a parameter)
    data2 = $(data).find(syntax);
}

所以它应该找到包含Board / board / BoaRD等的每个元素......(find应该不区分大小写)

编辑 - 尝试使用filter + regex,我知道我做错了....:

data2 = $(data).find(syntax).filter(function() {
    return $(this).text().match(new RegExp(str, 'i'));
});

1 个答案:

答案 0 :(得分:0)

怎么样:

var regex = new RegExp(str, 'i');
data2 = $(data).find('prop-db > prop').filter(function() {
    return $(this).attr('caption').match(regex);
};

.text()将返回<prop /> xml元素的内容,在帖子的示例中为空字符串。相反,我们需要测试<prop />元素的标题属性。

将正则表达式对象创建的创建移出循环,将确保无论检查多少元素,都只应创建一个对象。