我使用 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/