jQuery在.live上崩溃(“keyup”)
jQuery Crashes on .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被退格到空的时候,整个页面都崩溃了,我从Google Chrome收到了"哇,Snap!"的消息。
我使用的是jQuery v1.7.2
一百万!
编辑
我还应该指出,search()函数突出显示了正文中的文本(请注意注释部分)。我正在使用高亮插件。。。
搜索Fn:
function search(query) {
$("center").removeHighlight();
$(".paragraph").highlight(query);
$(".highlight").each(function (index) {
$(this).attr("id", "tmpforgoToByClassScrollhighlight" + index);
});
}
尝试改用.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元素,这样就不会在每次设置关键帧时反复选择它们。
此外,我没有浏览所有的.highlight
代码,但其中可能有一个错误,不允许使用空字符串,这就是网站导致浏览器崩溃的原因。
您应该使用.delete()代替
$(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();
}*/
});
});
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- JQuery合并了keyup和focusout两个函数
- location.reload(true)崩溃浏览器选项卡
- 引导程序崩溃一次只能看到一个
- Grunt构建导致Angular应用程序在dist上崩溃
- jquery扩展了崩溃效率
- 访问代码生成的输入元素上的keyup事件
- 为什么这个For循环会使浏览器实验室崩溃
- 如何使用keyup或input进行操作?javascript(jQuery)
- 引导崩溃具有快照抖动
- 未在keyup上发布变量
- Jquery keyup()函数无法正常工作
- 引导程序导航栏崩溃问题
- jQuery Mobile点击数据崩溃
- 脸书's的inApp浏览器在尝试上传表单中的照片时崩溃
- 同一事物的两个函数,一个崩溃,另一个不崩溃,为什么
- twitter引导崩溃在第一次点击后停止工作
- Keydown/Keyup被呼叫7次
- jQuery在.live上崩溃(“keyup”)
- j查询“keyup”在检查“字数统计”时崩溃页面