0

我这里有一些代码:

$(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!” 来自谷歌浏览器的消息。

我正在使用 jQuery v1.7.2

谢谢一百万!

编辑

我还应该指出,search()函数突出显示正文中的文本(注意注释部分)。我正在使用高亮插件...


搜索 Fn:

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

2 回答 2

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代码,但其中可能存在一个不允许空字符串的错误这就是网站导致浏览器崩溃的原因。

于 2012-07-12T13:29:54.013 回答
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();  
   }*/
 });
});
于 2012-07-12T13:27:19.473 回答