Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 使用在每个div的元素中找到的文本进行搜索筛选_Javascript_Jquery_Filter_Filtering_Show Hide - Fatal编程技术网

Javascript 使用在每个div的元素中找到的文本进行搜索筛选

Javascript 使用在每个div的元素中找到的文本进行搜索筛选,javascript,jquery,filter,filtering,show-hide,Javascript,Jquery,Filter,Filtering,Show Hide,我发现了一个fiddle,它可以根据搜索框中使用的文本隐藏文本,但无法找出如何将此方法应用于包含多个元素的div。如何更改所附fiddle中的jQuery,使其过滤与输入的搜索匹配的div元素,而不是列表项中的文本 如果div中有多个“span”,只需向其添加一个类名即可。然后改变 var text=$(this).find(“span”).text().toLowerCase() 致: var text=$(this).find(“.spanClassName”).text().toLowe

我发现了一个fiddle,它可以根据搜索框中使用的文本隐藏文本,但无法找出如何将此方法应用于包含多个元素的div。如何更改所附fiddle中的jQuery,使其过滤与输入的搜索匹配的div元素,而不是列表项中的文本

如果div中有多个“span”,只需向其添加一个类名即可。然后改变

var text=$(this).find(“span”).text().toLowerCase()

致:


var text=$(this).find(“.spanClassName”).text().toLowerCase()

这应该只匹配具有类connect cat的DIV,并按内部范围进行过滤

$('#box').keyup(function(){
   var valThis = $(this).val().toLowerCase();
    if(valThis === ""){
        $('div.connect-cat').show();
    } else {
        $('div.connect-cat').each(function(){
            var text = $(this).find('span').text().toLowerCase();
            if (text.indexOf(valThis) >= 0) { $(this).show(); }
            else { $(this).hide(); }
        });
   }
});


如果我需要在每个div框中添加另一个文本元素,是否有一种方法可以搜索每个div中的所有文本?这里有一个额外的文本元素-jsfiddle.net/point71echo/mttgj1tt/1–point71echo

下面是一个在原生JavaScript中同时搜索两个元素的解决方案,不需要任何库

document.getElementById("box").onkeyup=function(){
  var matcher = new RegExp(document.getElementById("box").value, "gi");
  for (var i=0;i<document.getElementsByClassName("connect-cat").length;i++) {
    if (
      matcher.test(document.getElementsByClassName("name")[i].innerHTML) || 
      matcher.test(document.getElementsByClassName("category")[i].innerHTML)
    ) {
      document.getElementsByClassName("connect-cat")[i].style.display="inline-block";
    } else {
      document.getElementsByClassName("connect-cat")[i].style.display="none";
    }
  }
}

使用在每个div单击按钮的元素中找到的文本进行搜索筛选:

如果我需要在每个div框中添加另一个文本元素,是否有一种方法可以搜索每个div中的所有文本?这里有一个额外的文本元素-@point71echo,我知道这已经很旧了,但我还是对它进行了更新。我改进了它,还添加了一个jQuery版本。在RegExp中这样使用“g”(全局)是错误的。它有一种混乱一切的状态。不相信我?尝试搜索“ra”,您将只看到“橙色”,而不是“萝卜”。修复:如何单击按钮搜索在post plz中添加JSFIDLE链接。
$('#box').keyup(function(){
    var valThis = $(this).val().toLowerCase();
        if(valThis == ""){
            $('.connect-cat').show();
        } else {
            $('.connect-cat').each(function(){
            var text = $(this).find("span").text().toLowerCase();
            (text.indexOf(valThis) >= 0) ? $(this).show() : $(this).hide();
        });
    };
});
$('#box').keyup(function(){
   var valThis = $(this).val().toLowerCase();
    if(valThis === ""){
        $('div.connect-cat').show();
    } else {
        $('div.connect-cat').each(function(){
            var text = $(this).find('span').text().toLowerCase();
            if (text.indexOf(valThis) >= 0) { $(this).show(); }
            else { $(this).hide(); }
        });
   }
});
document.getElementById("box").onkeyup=function(){
  var matcher = new RegExp(document.getElementById("box").value, "gi");
  for (var i=0;i<document.getElementsByClassName("connect-cat").length;i++) {
    if (
      matcher.test(document.getElementsByClassName("name")[i].innerHTML) || 
      matcher.test(document.getElementsByClassName("category")[i].innerHTML)
    ) {
      document.getElementsByClassName("connect-cat")[i].style.display="inline-block";
    } else {
      document.getElementsByClassName("connect-cat")[i].style.display="none";
    }
  }
}
$("#box").on('keyup', function(){
  var matcher = new RegExp($(this).val(), 'gi');
  $('.connect-cat').show().not(function(){
      return matcher.test($(this).find('.name, .category').text())
  }).hide();
});