2013-07-29 57 views
0

我在頁面上使用JQuery代碼將用戶的選擇從下拉列表發送到服務器。出於某種原因,當我用.live()這樣的:爲什麼.live()放慢我的頁面?

$(".rNameSelect:not(.srchCntnt .rNameSelect)").live("change", function(){ 
     var rName=$(this).val(); 
     $("#managersViewTabs .mgrCntnt").load("managerview.do?type=report&reportName=" + encodeURIComponent(rName)); 
    }); 

的頁面得到了越來越慢的每個我在下拉的另一種選擇點擊的時間!當我改變它是這樣的:

$(".rNameSelect:not(.srchCntnt .rNameSelect)").change(function(){ 
     var rName=$(this).val(); 
     $("#managersViewTabs .mgrCntnt").load("managerview.do?type=report&reportName=" + encodeURIComponent(rName)); 
    }); 

問題解決了!爲什麼.live()慢?我真的想要.live()還是.change()還好嗎?

+2

我建議你不要使用'.live()',因爲1.8已經depricated,更好地利用'。對()' –

+0

我使用JQuery 1.6 – elizabk

回答

1

當找你使用.live()它會像一個觸發器和腳本需要保持乳寧直到這個動作發生。 它會消耗RAM漸變。

當你在這種情況下使用.change(),jQuery的假定是在本地JavaScript事件這種變化。它會更快。

看看herehere更好地瞭解事件的jQuery的工作。

0

.live()方法慢,因爲它僅用於登記關於該文檔的事件處理程序。 您的活動始終會一直委託給該文檔。如果您的DOM很深,這可能會影響性能。

我的建議,使用。對()方法,因爲你設定你想要的部分事件處理程序。

相關問題