【问题标题】:JQuery XML Find Attribute Case InsensitiveJQuery XML 查找不区分大小写的属性
【发布时间】:2013-11-25 17:58:36
【问题描述】:

我有一个搜索字段,如果我输入 board 它什么也不返回,但如果我输入 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 等的每个元素...(查找应该不区分大小写)

编辑 - 用过滤器 + 正则表达式尝试了这个,我知道我做错了什么......:

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

【问题讨论】:

标签: javascript jquery xml


【解决方案1】:

怎么样:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多