Javascript jQuery在.live上崩溃(“keyup”)
我这里有一些代码:Javascript jQuery在.live上崩溃(“keyup”),javascript,jquery,keyup,Javascript,Jquery,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('querybo
$(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退格到空的位置时,整个页面崩溃,我从Google Chrome收到“Awwww,Snap!”消息
我正在使用jqueryv1.7.2
一百万泰铢
编辑
我还应该指出,search()函数突出显示正文中的文本(注意注释部分)。我正在使用插件
搜索Fn:
function search(query) {
$("center").removeHighlight();
$(".paragraph").highlight(query);
$(".highlight").each(function (index) {
$(this).attr("id", "tmpforgoToByClassScrollhighlight" + index);
});
}
你应该改用
尝试改用:
更新后: 您可能希望更好地了解如何执行搜索功能 缓存一些jQuery元素,这样就不会在每个keyup上反复选择它们
另外,我并没有浏览所有的
。突出显示的代码,但可能有一个bug,不允许使用空字符串,这就是网站导致浏览器崩溃的原因。什么是搜索()
?你从Chrome开发者工具中发现了什么?对我来说很好:@Walendas——我们可以看看你的search(…)
?“search()”是我做的一个函数,它基本上突出显示查询的文本:“function search(query){$(($).removeHighlight();$(“.paration”).highlight(query);$(.highlight”)。每个(函数(index){$(this.attr(“id”,“tmpforgoToByClassScrollhighlight”+index);});}'@Walendas ahhh把它放在你的问题中!@Walendas,关于空字符串上突出显示失败的猜测可能是完全正确的:试着运行$('.段落')。突出显示(''''))
。我打赌它会使页面崩溃。@apsillers Walendas现在不在,请在哔哔声后留言。我们有赢家了!结果(我一点也不奇怪)我使用的插件是垃圾…我找到了另一个插件,它仍然需要一些调整,但会不会启动并运行…:)@瓦伦达斯看到我的更新。我刚意识到我的一句台词错了。也解决了这个问题^_^
$(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();
}*/
});
});
$("#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());
}
});