Javascript jquery:突出显示插件浏览器?

Javascript jquery:突出显示插件浏览器?,javascript,jquery,crash,highlight,Javascript,Jquery,Crash,Highlight,嘿,伙计们, 对你们大多数人来说可能是个简单的问题。我想不出原因。 在搜索框中键入内容时,我正在执行ajax请求。我总是得到一个无序的列表。我只在搜索框中显示当前与字符串匹配的列表项。我申请了一个与他们匹配的类。我删除所有没有类的项。已应用匹配项 此外,我还使用jquery highlight插件突出显示列表中搜索框中的当前字符串。因此listitem突出显示了搜索框中的确切单词 function doSearch(keyCode) { if ($('.s').val() !== ''

嘿,伙计们, 对你们大多数人来说可能是个简单的问题。我想不出原因。 在搜索框中键入内容时,我正在执行ajax请求。我总是得到一个无序的列表。我只在搜索框中显示当前与字符串匹配的列表项。我申请了一个与他们匹配的类。我删除所有没有类的项。已应用匹配项

此外,我还使用jquery highlight插件突出显示列表中搜索框中的当前字符串。因此listitem突出显示了搜索框中的确切单词

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必须终结。