javascript - 如何根据多个数据属性过滤搜索结果

标签 javascript jquery regex search

我正在尝试根据内联数据属性搜索多个数据结果。 但是,我只能弄清楚如何搜索单个数据属性而不是所有数据属性。 我将如何做到这一点?

我有:http://jsfiddle.net/9SMZC/2/

$("input[type=text]").keyup(function () {
    var filter = $(this).val();

    $("a").each(function () {
        if ($(this).attr("data-event-name").search(new RegExp(filter, "i")) < 0) {
            $(this).hide();
        } else {
            $(this).show();
            matches++;
        }
    });
});

提前致谢!

最佳答案

如果你想应用“或”逻辑,你可以这样做:

$("input[type=text]").keyup(function () {
    var filter = $(this).val();
    $("a").each(function () {
        var data = $(this).data();
        $(this).hide();
        for (var key in data) {
            if (~data[key].search(new RegExp(filter, "i"))) {
                $(this).show();
                break;
            }
        }
    });
});

Demonstration (例如尝试搜索“andrew”)

想法是获取data 对象并遍历属性。为了简化代码(即避免保留 bool 值),我也总是在元素正常时隐藏和显示。

关于javascript - 如何根据多个数据属性过滤搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419852/

相关文章:

javascript - 清除间隔以停止效果

javascript - ajax查询中从div获取数据

javascript - 有没有办法为 HTML5 输入的模式属性应用正则表达式修饰符?

javascript - 使用 node.js 使用来自 azure eventhub 的八位字节流数据

javascript onclick滚动到中间页面上的div?

javascript - 自动聚焦表单中事件 div 内的第一个表单元素

javascript - 正则表达式捕获捕获组中的所有内容(包括换行符)

javascript - 在 JavaScript Azure 函数中调用图形 API

javascript - jQuery 选择器中的正则表达式不接受\d?

javascript - 从扑克之星历史中解析席位