2011-08-14 141 views
1

如何在jquery中綁定和解除綁定.delegate。假設我使用這個js進行簡單的點擊。jQuery綁定和解除綁定代理

function spanclick(){ 
    $(this).html('<input class="mm" value="' + $(this).text() + '"/>'); 
    $(this).unbind("click"); 
} 
$("span.la").click(spanclick); 
$("span.la").unbind("click"); 

但現在我想切換到委託代替簡單的點擊。
因爲當然我想將它用於頁面加載時尚未創建的選擇器。或者我需要使用.live()
問題: 我怎麼bind和jQuery的unbinddelegate's

回答

4

要使用委託,使用span.la父元素(優選的)或documentbody

$(document).delegate('span.la', 'click', spanclick); 

要undelegate:

$(document).undelegate('span.la', 'click'); 
+1

如果」重新去'.d elegate()'到'document',你可以使用'.live()'。 –

+0

@Matt Ball:添加評論來澄清。我同意,「文件」不是一個好的候選人。 – Mrchief

+0

'.delegate()'仍然有點高效,因爲它不會浪費初始DOM選擇。也是一個更好的國際海事組織,因爲那時你正在考慮事件代表團,並可能更容易理解發生了什麼事情。 – user113716