我正在使用JQuery中的Autocomplete进行文本匹配,通过重载_renderItem方法来检查用户搜索的文本在JSON对象中是否存在。如果找到它,我将用具有“user_highlight_match”类的span标记替换它。
我正在进行多词搜索,所以"John Smi"会突出显示John,然后是Smi,而搜索"John James Smi"会突出显示"John"和"Smi"。但问题是,如果已经有了class属性的span标签,它会开始匹配标签属性。如何解决这个问题?
编辑:以下是一些代码示例:
我正在进行多词搜索,所以"John Smi"会突出显示John,然后是Smi,而搜索"John James Smi"会突出显示"John"和"Smi"。但问题是,如果已经有了class属性的span标签,它会开始匹配标签属性。如何解决这个问题?
编辑:以下是一些代码示例:
renderItem = function(ul, item) {
li = $('<li>', id: item._id);
if this.term and not item.dialog
terms = this.term.split(' ');
for term in terms
re = new RegExp("("+term+")", 'i');
match = re.exec(item.name);
if match
item.name = item.name.replace re, "<span class=\"user_highlight_match\">+match[0]+</span>";
)
首先一个术语可以匹配成功,但如果您在html标签中搜索内容,则每次循环后部分匹配都将被替换为标签。例如,假设找到了“las”这个词,它会变成这样:
<span c<span class="user_highlight_match">Last</span>s="user_highlight_match">Last</span>