2010-03-01 23 views
1

後,我有一個函數來分析一些數據,以及得到的結果是一樣的前面,只有這裏和那裏投入了一些課程。jQuery的不幹活回調

$(document).ready(function() { 
    $("div.rating div").click(function(){ 
    var str = $(this).attr('alt'); 
    var b = str.split("-"); 
    var book = b[0]; 

    $("div.book-" + book).load("sites/all/modules/rm_raamaturiiul_rating/rating.php", { query: str }); 
    }); 
}); 

但我加載結果後,jquery不檢查它。 例如,我點擊一個div,它發送一個請求,則返回並重寫在div,具有相同ID和類名,但在此之後,jquery的忽略它的任何點擊。我甚至在.load之前放了alert(),但jquery只是在第一次完成它的工作後才跳過它。 我試過帖子,但jq根本不啓動div上的功能。

回答

2

這是因爲你的重新加載的內容沒有附加事件處理程序。使用live()方法附加它們,它會在重新加載數據後工作,或者在加載數據後手動掛接它們(第一種方法更簡單)。

3

調用$(...).click(function)將處理jQuery對象當前包含的特定元素的點擊事件
當你調用.load,元素被新的元素,它不具有任何事件處理程序所取代。

你需要調用.live,這將處理該事件的選擇,在創建時,不管匹配的所有元素。

例如:

$("div.rating div").live("click", function() { ... }); 
+1

+1,爲全面解釋 – 2010-03-01 15:29:47