Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 搜索关键字的DOM遍历未按预期显示?_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 搜索关键字的DOM遍历未按预期显示?

Javascript 搜索关键字的DOM遍历未按预期显示?,javascript,jquery,dom,Javascript,Jquery,Dom,我试图通过遍历DOM并查找搜索到的单词,在UI中使用JavaScript实现过滤机制。这就是我的HTML和UI的外观。 因此,我们的想法是,一旦数据(是动态的)从后端(通过java)加载,我就想在HTML中遍历DOM,查找他们搜索的特定关键字。这就是我在Jquery中编写JS的方式 $(document).ready(function() { jQuery('#txtSearch').keyup(function(event){ if (event.keyCode =

我试图通过遍历DOM并查找搜索到的单词,在UI中使用JavaScript实现过滤机制。这就是我的HTML和UI的外观。

因此,我们的想法是,一旦数据(是动态的)从后端(通过java)加载,我就想在HTML中遍历DOM,查找他们搜索的特定关键字。这就是我在Jquery中编写JS的方式

$(document).ready(function() {
     jQuery('#txtSearch').keyup(function(event){
        if (event.keyCode == 27) {
            resetSearch();
        }

        if (jQuery('#txtSearch').val().length > 0) {
            jQuery('.list-group-item').hide();
            jQuery('.list-group-item span.assignee-style:Contains(\'' + jQuery('#txtSearch').val() + '\')').
            parent('li').parent('ul').parent('li').show();

        }

        if (jQuery('#txtSearch').val().length == 0) {
            resetSearch();
        }

    });      

    function resetSearch(){
        jQuery('#txtSearch').val('');
        jQuery('.list-group-item').show();
        jQuery('#txtSearch').focus();
    }



}); 

我期望的行为是,当我搜索“john”时,我只希望出现包含“john”的数据(在所有3列中)。作为一个开始,我只是以受让人的名字遍历DOM。但结果并不是我想要的。我做错了什么?

.parent
使用选择器,而不仅仅是标记名,所以为什么不简化为:

$(document).ready(function() {
     jQuery('#txtSearch').keyup(function(event){
        var search = jQuery('#txtSearch').val();
        if (event.keyCode == 27) {
            resetSearch();
        }

        if (search.length > 0) {
            jQuery('.list-group-item').hide();
            jQuery('.list-group-item span.assignee-style:contains(\'' + search + '\')').
                parent('.list-group-item').show();
        }
        else {
            resetSearch();
        }

    });      

    function resetSearch(){
        jQuery('#txtSearch').val('');
        jQuery('.list-group-item').show();
        jQuery('#txtSearch').focus();
    }
}); 

:contains()
选择器的匹配区分大小写。搜索“john”不会找到“john”。

True,而且“:contains”本身区分大小写。我注意到OP使用了“:Contains”@user133371我也这么认为,但我试过了,jQuery似乎可以处理“:Contains”很好。你和用户一起回答:上面的Dark Falcon回答对我有效,thxI为区分大小写的jQuery.expr[':']添加了这段代码。Contains=函数(a,I,m){返回jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;}@pushya应该这样做我猜:)你和用户一起回答:上面的尖刻答案对我有效,thxFirst我尝试了你的答案当我输入User:Pointy时它不起作用,然后它开始工作一些Dom元素有特殊字符,比如[,-当我一看到“-”就键入“um priory”时它没有向我展示任何东西,因为它没有意识到这一点。他们有任何可能的解决办法吗