【问题标题】:Jquery Search - Doesn't work as expectedJquery 搜索 - 无法按预期工作
【发布时间】:2023-04-03 01:23:01
【问题描述】:

这是我的示例代码: http://jsfiddle.net/pT6dB/

我有一点问题。那里有两个示例答案:

“地球有多圆?”和“纸的矩形是多少?”

如果我输入搜索词“round Earth”,我希望它会显示“地球有多圆?”结果却没有。

我认为我需要更改查询,以便说明哪些问题同时包含“圆形”和“地球”。

这是一个简单的修改吗?这是来自网站的示例代码,所以不幸的是我不知道从哪里开始。

【问题讨论】:

标签: javascript jquery search


【解决方案1】:

您需要搜索每个单词,而不是搜索字符串“round Earth”,它在任何项目中都不存在:

    var words = s.split(' ');

    $('#result LI').hide();

    $(words).each(function() {
        $('#result LI:contains(' + this + ')').show();
    });

Demo

当然,这里有一些可以想象的复杂情况;我们所做的只是调整脚本以涵盖更具体的场景。但这对于您的目的可能已经足够了。

【讨论】:

    【解决方案2】:
    $('#search').keyup(function(e) {
        var s = $(this).val().trim();
    
        // show all results
        $('#result LI').show();
    
        // split the search into words
        var keywords = s.split(' ');
    
        // loop over the keywords and if it's not in a LI, hide it
        for(var i=0; i<keywords.length; i++) {
            $('#result LI:not(:contains('+keywords[i]+'))').hide();
        }
    });
    

    【讨论】:

    • 搜索位是完美的,但是...如何将扩展位添加回答案?在他们点击时切换之前。
    • 只需使用您之前使用的相同点击事件。
    • 对不起,我对JS不太了解。我试图添加 .find('EM').slideToggle();到我的脚本使其切换,但它不起作用:jsfiddle.net/pT6dB/60
    • 我尝试了您的方法,但它破坏了搜索。在你的搜索也不起作用。切换是否与搜索冲突?
    • 对不起,我没有测试它。这应该可以正常工作:jsfiddle.net/pT6dB/62
    【解决方案3】:

    我想您是在问“这会是一个简单的修改吗?” 答案是不。 :)

    您正在尝试在没有数据库的情况下进行全文搜索,而只是使用 jQuery,让我们不要谈论更复杂的情况,但至少您需要使用 split 将用户输入的单词与空格分开并一一检查。

    【讨论】:

      【解决方案4】:

      您要查找的是 javascript 中的 full-text searchcontains 还不够。但你可以做类似这个问题的公认答案:text search in javascript?

      【讨论】:

        【解决方案5】:

        Try that 它还会检查您是否输入了超过 1 个在句子中不连续的单词。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-01
          • 2018-05-13
          • 2012-05-19
          相关资源
          最近更新 更多