我在这里有一些代码:
$(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
一百万!
修改
我还应该指出 search()函数突出显示正文中的文本(注意注释部分)。我正在使用highlight插件...
搜索Fn:
function search(query) {
$("center").removeHighlight();
$(".paragraph").highlight(query);
$(".highlight").each(function (index) {
$(this).attr("id", "tmpforgoToByClassScrollhighlight" + index);
});
}
答案 0 :(得分: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());
}
});
您可能希望更好地了解搜索功能的执行方式。
缓存其中一些jQuery元素,这样就不会在每个keyup上反复选择它们。
此外,我没有浏览所有.highlight
代码,但可能存在不允许空字符串的错误,这就是网站的原因导致浏览器崩溃。
答案 1 :(得分: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();
}*/
});
});