2013-06-19 112 views
1

根據jQuery API描述:live在最新版本中被完全刪除。但它已廣泛用於我們的項目。例如:JQuery替換live ::`delegate`或`on`

$('div.collapsed').live('mouseover', function() { 
     TBD.GENERAL.showLoginOther(this); 

}); 

$(".info_bar .filter a, .pagination a").live("click", function() { 
    TBD.DHTML.shadeWithLoading($(this).data('container-id')); 
    $.getScript(this.href); 
    return false; 
}); 

$("form[loading-effect]").live('ajax:before', function() { 
    $(this).find('.button_panels, .loading_panels').toggle(); 
}); 

......... 

現在,如果我想使用最新的jQuery會是怎樣的正確更換的住嗎?委託或關於?

預計有點說明。在此先感謝

+2

您可以在文檔中找到最佳解釋我認爲 –

+0

http://stackoverflow.com/a/14405273/1414562 –

+0

最簡單的解決方案不是更新您的jQuery版本,除非您有其他具體原因這樣做。 – Blazemonger

回答

1

由於.live()不贊成你更好使用.on()

$('div.collapsed').on('mouseover', function() { 

或可以像使用

$(document).on('mouseover','div.collapsed', function() { 

因爲

  1. 不能使用。 live()用於可重用的小部件。
  2. stopPropagation()不適用於live。
  3. live()比較慢。
  4. live()不可鏈接。

和.on()方法提供了附加事件處理程序所需的所有功能。

+1

爲什麼不'委託'?或爲什麼'開'。將不勝感激 – Muntasim

+1

這不是如何使用授權,錯誤的語法 –

+0

請參閱我的編輯@roasted – Gautam3164