javascript - 使用 jstree 搜索插件为节点标题启用精确的多词搜索

标签 javascript jquery jquery-plugins jstree

我使用 jstree 搜索插件 ( documentation ) 在我的 HTML 树的标题字段中搜索多个 ID。

我取了原来的jstree code (第 3398 行)并按照建议进行更改 here在树的标题字段中启用多词搜索。

它适用于“标题包含”查询(例如节点 x 的标题 ID:40857332 和节点 y 的标题 ID:408 包含搜索词 ID:408) 但我不知道如何更改代码以仅查找完全匹配项(例如,节点 y 的标题 ID:408 与搜索词 ID 匹配:408 准确)。

函数是这样调用的:

$("#my_html_tree").jstree("search", search_words);

具有以下配置:

"search": {"case_insensitive": true, "search_method": "jstree_title_contains_multi"}

变量“search_words”是一个包含多个 ID 的字符串:

var search_words = "ID:4 ID:7 ID:3188";

HTML 树节点的格式:

<li id="3188"> <a title="ID:3188">Tree node 3188</a></li>

这是我修改后的代码:

$.expr[':'].jstree_title_contains_multi = function(a,i,m){

    var word, words = [];
    var searchFor = m[3].toLowerCase().replace(/^\s+/g,'').replace(/\s+$/g,'');
    if(searchFor.indexOf(' ') >= 0) {
        words = searchFor.split(' ');
    }
    else {
        words = [searchFor];
    }
    for (var i=0; i < words.length; i++) {
        word = words[i];
        if((a.getAttribute("title") || "").toLowerCase().indexOf(word) >= 0) {
            return true;
        }
    }
    return false;

};

我必须如何更改代码才能仅搜索完全匹配项?

如有任何帮助,我们将不胜感激。

最佳答案

我找到了以下解决方案: 而不是使用

if((a.getAttribute("title") || "").toLowerCase().indexOf(word) >= 0)

我用

if((a.getAttribute("title") || "").toLowerCase() === word )

关于javascript - 使用 jstree 搜索插件为节点标题启用精确的多词搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18511788/

相关文章:

javascript - Raphael.js VSDOC

JavaScript:查询子项并修改父项

jquery - 在 jquery 数据表中使用 Ajax 进行分页

javascript - 在 JavaScript 类中添加回调功能

javascript - 如何将动态 json 加载到 jquery 数据表

javascript - 如何检查元素是否是脚本

javascript - Meteor.user() 在客户端 Controller 中未定义

javascript - 如何使用 javascript trim 子字符串?

javascript - 使用 Bootstrap Slider 一个 Slider 结果是另外两个 Slider 的总和

javascript - 获取网页内容并放入数组或字符串中