Javascript 使用在每个div的元素中找到的文本进行搜索筛选
我发现了一个fiddle,它可以根据搜索框中使用的文本隐藏文本,但无法找出如何将此方法应用于包含多个元素的div。如何更改所附fiddle中的jQuery,使其过滤与输入的搜索匹配的div元素,而不是列表项中的文本 如果div中有多个“span”,只需向其添加一个类名即可。然后改变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
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();
});