2012-07-12 57 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(); 
    }*/ 
}); 
});