2011-03-30 27 views

回答

1

http://api.jquery.com/live/

http://api.jquery.com/delegate

其所有的文檔。

$("table").delegate("td", "hover", function(){ 
    $(this).toggleClass("hover"); 
}); 

就等於寫了下面的代碼中使用.live()

$("table").each(function(){ 
    $("td", this).live("hover", function(){ 
     $(this).toggleClass("hover"); 
    }); 
}); 
0

剛纔讀的API文檔。

代表期望的選擇器作爲根元素,而住不

4

Googled - 由於每對jquery的站點上的文檔。

由於.live()方法處理 事件一旦他們傳播到 文件的頂部,它不是 可能停止活 事件傳播。同樣,由 .delegate()處理的事件將始終傳播到 委託給它們的元素 ;事件處理程序在其下面的任何 元素將在調用 委派的事件處理程序時已經執行 。

$("table").delegate("td", "hover", function(){ 
    $(this).toggleClass("hover"); 
}); 

等價於寫入下面的代碼使用.live():

$("table").each(function(){ 
    $("td", this).live("hover", function(){ 
     $(this).toggleClass("hover"); 
    }); 
}); 
1

的 「.live()」 API具有不必要從目標建立一個jQuery對象的缺點選擇器在<body>元素上建立冒泡事件處理程序之前。否則,你可以表達「.live()」中的術語「.delegate()」:

$(something).live('click', func); 

實際上是相同的

$('body').delegate(something, 'click', func); 

但後者是更爲有效,因爲「事「設置處理程序時,選擇器實際上不會應用到頁面上。

相關問題