2012-07-12 66 views
0

我这里有一些代码:jQuery的崩溃对.live( “KEYUP”)

$(document).ready(function() { 
$("#querybox").live("keyup", function(e) { 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if (code == 13) { 
     $("#querybox").blur(); 
    } 
    else { 
     search(document.getElementById('querybox').value); 
    } 

    /*if (document.getElementById('querybox').value == "") { 
     $("center").removeHighlight(); 
    }*/ 
}); 
}); 

检测为keyUp并用它来搜索一些东西。问题是:当#querybox后退到空的位置时,整个页面崩溃,我得到“Awwww,Snap!”来自Google Chrome的消息。

我正在使用jQuery v1.7.2

Thx 100万!

编辑

我还要指出的是,搜索()函数在体内凸显文字(注意注释部分)。我现在用的是highlight插件...


搜索FN:

function search(query) { 
    $("center").removeHighlight(); 
    $(".paragraph").highlight(query); 
    $(".highlight").each(function (index) { 
     $(this).attr("id", "tmpforgoToByClassScrollhighlight" + index); 
    }); 
} 
+0

什么是'search()'?你从Chrome开发者工具中发现了什么? – Pointy 2012-07-12 13:20:59

+5

http://liveisdeprecated.com/ – Adi 2012-07-12 13:21:09

+0

对我来说很好:http://jsfiddle.net/johnkoer/zmYpa/4/ – 2012-07-12 13:23:07

回答

1

尝试使用.on(...)代替:

$("#querybox").on("keyup", function(e) { 
    var code = (e.keyCode ? e.keyCode : e.which); 
    var queryBox = this; 
    if (code === 13) { // PRESSED ENTER 
     queryBox.blur(); 
    } 
    else { 
     search(queryBox.val()); 
    } 
}); 

您更新后:

你可能想看看更好为你怎么做你的搜索functiom。

缓存一些jQuery元素,所以你不要一直在每个keyup上反复选择它们。

而且,我不打算通过所有.highlight代码,但有可能是在那里,允许为空字符串的错误,这就是为什么该网站是导致浏览器崩溃。

+0

@Walendas,对空白字符串高亮失败的猜测可能已经失效:尝试运行'$('。paragraph')。highlight('')'。我打赌它会使页面崩溃。 – apsillers 2012-07-12 13:41:09

+0

@apsillers Walendas现在不在这里,请在哔声后留言*** beeeeeeeeeeeeeeeeeeeeeeeeep *** – Neal 2012-07-12 13:41:53

+0

BING BING BING我们有一个赢家!事实证明(我并不感到惊讶),我使用的插件是废话......我创建了另一个仍需要调整的东西,但Sonn会启动并运行...... :) – Walendas 2012-07-12 13:48:30

0

您应该使用.delegate()代替

$(document).ready(function() { 
//It will be a good advice to replace body with a parent element of #querybox 
$("body").delegate("#querybox","keyup", function(e) { 
var code = (e.keyCode ? e.keyCode : e.which); 
    if (code == 13) { 
    $("#querybox").blur(); 
    } 
    else { 
    search(document.getElementById('querybox').value); 
    } 

    /*if (document.getElementById('querybox').value == "") { 
    $("center").removeHighlight(); 
    }*/ 
}); 
});