Javascript jquery:突出显示插件浏览器?
嘿,伙计们, 对你们大多数人来说可能是个简单的问题。我想不出原因。 在搜索框中键入内容时,我正在执行ajax请求。我总是得到一个无序的列表。我只在搜索框中显示当前与字符串匹配的列表项。我申请了一个与他们匹配的类。我删除所有没有类的项。已应用匹配项 此外,我还使用jquery highlight插件突出显示列表中搜索框中的当前字符串。因此listitem突出显示了搜索框中的确切单词Javascript jquery:突出显示插件浏览器?,javascript,jquery,crash,highlight,Javascript,Jquery,Crash,Highlight,嘿,伙计们, 对你们大多数人来说可能是个简单的问题。我想不出原因。 在搜索框中键入内容时,我正在执行ajax请求。我总是得到一个无序的列表。我只在搜索框中显示当前与字符串匹配的列表项。我申请了一个与他们匹配的类。我删除所有没有类的项。已应用匹配项 此外,我还使用jquery highlight插件突出显示列表中搜索框中的当前字符串。因此listitem突出显示了搜索框中的确切单词 function doSearch(keyCode) { if ($('.s').val() !== ''
function doSearch(keyCode) {
if ($('.s').val() !== '') {
jqXHR_Old = $.post( Searchmap.ajaxurl, data, function(response) {
$sr.html(response);
//add class to all results that match the current searchterm
var found = $('#searchresults ul li:icontains("' + $('.s').val() + '")');
found.addClass('matched');
//remove all remaining list-items
$('#searchresults ul li').not('.matched').remove();
//highlight current string in searchbox
$('#searchresults ul li.matched').highlight($('.s').val());
...
除了一个案例外,一切正常。每当输入字段的内容被删除并再次为空时,浏览器就无法停止脚本。该漏洞100%是由插件引起的,此外还有这一行:$('searchresults ul li.matched').highlight($('s').val())代码>。。。插件本身工作正常。我一直在用它。该插件甚至可以在这种情况下工作,只是在这种罕见的情况下,当ajax请求当前被触发,并且输入中的文本再次被设置为空时,浏览器崩溃
知道为什么会这样吗?这可能只是我遇到的一个逻辑问题。我已经在检查输入是否为空。因此,当再次删除输入中的文本时,甚至不应该触发hightlight行
有什么想法吗?突出显示仍然会发生,您的ajax调用是异步的,它与其余代码一起运行
检查输入插件是否为空,然后启动ajax。完成后,它将运行您传递的其余代码(此代码是回调函数)。所以你现在可以看到一个空字符串
你可以尝试两件事。一种方法是存储搜索的字符串,但这仍然可能是指向原始字符串的指针:
function doSearch(keyCode) {
var input = $('.s').val();
if (input !== '') {
jqXHR_Old = $.post( Searchmap.ajaxurl, data, function(response) {
$sr.html(response);
//add class to all results that match the current searchterm
var found = $('#searchresults ul li:icontains("' + input + '")');
found.addClass('matched');
//remove all remaining list-items
$('#searchresults ul li').not('.matched').remove();
//highlight current string in searchbox
$('#searchresults ul li.matched').highlight(input);
或者,尝试将导致故障的线路用相同的逻辑进行缠绕:
function doSearch(keyCode) {
if ($('.s').val() !== '') {
jqXHR_Old = $.post( Searchmap.ajaxurl, data, function(response) {
$sr.html(response);
//add class to all results that match the current searchterm
var found = $('#searchresults ul li:icontains("' + $('.s').val() + '")');
found.addClass('matched');
//remove all remaining list-items
$('#searchresults ul li').not('.matched').remove();
//highlight current string in searchbox
if ($('.s').val() !== '') {
$('#searchresults ul li.matched').highlight($('.s').val());
}
铬!火狐!游猎!也许我也是!突出显示效果很好。在这种罕见的情况下,当请求发生时删除输入中的文本,浏览器就会崩溃。崩溃指的是一个js错误,导致chrome关闭这个选项卡,safari也是如此。firefox“无法停止脚本”。。。firefox必须终结。