2011-05-11 17 views
1

工作,我已經在我的jQuery代碼使用jQuery的.live()與當前和未來DOM

$('#tarea').click(function() { 
    // Do stuffs 
}); 

也能正常工作與此腳本一起載入按鈕#tarea。如果未來使用ajax加載了#tarea按鈕,則上述代碼不起作用。

現在我改變了代碼

$('#tarea').live('click', function() { 
    // Do stuffs 
}); 

這個時候,按鈕#tarea如果連同腳本不起作用加載。但是,如果使用ajax生成該腳本,該腳本將與按鈕一起工作。

我該如何編寫腳本,以便在兩種情況下都能正常工作?

回答

5

.live()在這兩種情況下都可以工作,而無需執行任何其他操作。我會檢查你的代碼中的其他問題,以防止這種情況發生。

重要提示:有一件事要檢查,以確保您的.live()事件被綁定,並且它不依賴於其他事件發生。它可能有助於發佈JavaScript文件的重要部分。我個人喜歡在全球範圍內宣佈我的.live()活動。

我做這樣的事情:

// this is what I mean by global because it is outside the document.ready 
$("#test").live("click", function() { 
    // do stuff 
}); 

$(function() { 
    // do stuff when document is ready 
}); 

如果你想證明什麼,我說上面,你只需要把按鈕和.live() JavaScript代碼在一個新的HTML文件。

1

你把:

$('#tarea').click(function() { 
    // Do stuffs 
}); 

的功能。

而當你通過AJAX加載,則在.load的第二參數添加的回調函數(上面的一個)()

例如:

.load(target_url, function() { $('#tarea').click(function() { blablabla; }})