Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用';搜索';方法在<;李>;及<;李>;标签_Javascript_Jquery_Search - Fatal编程技术网

Javascript 使用';搜索';方法在<;李>;及<;李>;标签

Javascript 使用';搜索';方法在<;李>;及<;李>;标签,javascript,jquery,search,Javascript,Jquery,Search,此函数当前通过元素内的文本过滤元素。如何修改它,使其也能按标记(如数据属性)内的文本进行过滤 我已尝试将($(this).text().search(…)更改为($(this).search(…),但这使函数无法完全工作 我在这里发布了一个工作示例: $(文档).ready(函数(){ $('#list li').addClass('visible'); $(“#搜索”).show(); $(“#过滤器”).keyup(函数(事件){ if(event.keyCode==27 | |$(this

此函数当前通过
  • 元素内的文本过滤
  • 元素。如何修改它,使其也能按
  • 标记(如数据属性)内的文本进行过滤

    我已尝试将
    ($(this).text().search(…)
    更改为
    ($(this).search(…)
    ,但这使函数无法完全工作

    我在这里发布了一个工作示例:

    $(文档).ready(函数(){
    $('#list li').addClass('visible');
    $(“#搜索”).show();
    $(“#过滤器”).keyup(函数(事件){
    if(event.keyCode==27 | |$(this.val()=''){
    $(this.val(“”);
    $('#list li').removeClass('visible').show().addClass('visible');
    }         
    否则{
    过滤器('#list li',$(this.val());
    }
    });
    });
    函数过滤器(选择器、查询){
    查询=$.trim(查询);
    query=query.replace(//gi,“|”);
    $(选择器)。每个(函数(){
    ($(this).text().search(new RegExp(query,“i”)<0)?$(this.hide().removeClass('visible'):$(this.show().addClass('visible');
    });
    }
    
    您可以尝试以下方法:

    $(selector).each(function () {
        var data = $.map($(this).data(), function (el) {
            return el;
        }).join(' ');
        ($(this).text() + ' ' + data).search(new RegExp(query, "i")) < 0 
            ? $(this).hide().removeClass('visible')
            : $(this).show().addClass('visible');
    });
    
    $(选择器)。每个(函数(){
    变量数据=$.map($(this).data(),函数(el){
    返回el;
    }).加入(“”);
    ($(this.text()+''+data).search(新的RegExp(查询,“i”)))<0
    ?$(this.hide().removeClass('visible'))
    :$(this.show().addClass('visible');
    });
    


    $(this).data()
    返回所有的数据属性,然后可以将这些属性连接到字符串中。

    如果我输入
    g
    ,为什么会出现
    项1
    ?@Bingo-因为项1中的数据属性包含“g”(data style=“Long-sleets,V-Neck”)@dfsq-您介意解释一下“$.map($(这个)'还有?我从未使用过'map'函数;-)@ChayaCooper
    $(this).data()
    是数据属性、键值的对象。和
    $.map(obj,callback)
    根据回调返回的值从
    obj
    中创建新数组
    obj
    可以是object或array。类似这样的东西???@adeneo-是的,谢谢:-)我接受了下面的答案,因为它不区分大小写(因此它更能反映我发布的代码),但绝对支持:-)
    $(selector).each(function () {
        var data = $.map($(this).data(), function (el) {
            return el;
        }).join(' ');
        ($(this).text() + ' ' + data).search(new RegExp(query, "i")) < 0 
            ? $(this).hide().removeClass('visible')
            : $(this).show().addClass('visible');
    });