Jquery 折叠搜索元素不适用于备用键事件

Jquery 折叠搜索元素不适用于备用键事件,jquery,Jquery,代码将搜索可折叠div中的元素。对于搜索,keypress事件将使用jquery搜索可折叠div中的数据。如果找到该术语,则只应显示可折叠树链,其他树链应隐藏 $(document).ready(function(){ $("#searchbox").keypress(function(){ $("div.collapse").collapse("hide"); //this will reset the div to hidden so that only search

代码将搜索可折叠div中的元素。对于搜索,keypress事件将使用jquery搜索可折叠div中的数据。如果找到该术语,则只应显示可折叠树链,其他树链应隐藏

$(document).ready(function(){
    $("#searchbox").keypress(function(){
        $("div.collapse").collapse("hide"); //this will reset the div to hidden so that only search term is displayed
        var search = $("#searchbox").val();
        $("div.collapse").find(":contains("+search+")").parent().collapse("show");
    });
});
JSIDLE链接:


问题是,搜索只对奇数keyup事件有效。当您键入第2次/4次等时,所有div都将隐藏。我很难确定发生这种情况的原因。

在第一次按下
键时,
\searchbox
中没有任何值
keyup
而不是
keypress
进行救援

*更新

    $(document).ready(function () {
        $("#searchbox").keyup(function () {
            $("div.collapse").each((_, div) => {
                const match = $(div).text().includes($(this).val());

                $(div).collapse(match ? "show" : "hide")
            })
        });
    });
*更新第2部分

你有复制品。仅在HTML节中激发Daclar代码

由于转换时间的原因,折叠切换是异步的。 在一个记号中调用同一元素的.collapse('hide')和.collapse('show')是没有意义的。
真正的DOM突变会在以后发生。

它工作得很好,我想哦,我现在觉得自己很愚蠢,没有看到代码重复。。谢谢你的帮助,非常有魅力!一点也不。祝你今天愉快。嗨,你能再帮我一次吗?是否可以以黄色()突出显示搜索结果?我对你的代码做了很多尝试,但都没有成功。你好。这是可能的,但并不容易。我没有时间实现自制功能,而且这不是个好主意。使用一些现有的插件。阅读更多:和