2011-02-11 62 views
0

我有一個簡單的jQuery腳本。我使用.ajax()從我的數據庫中獲取一些信息,它的工作原理非常完美。jQuery .click()問題

問題是php代碼genereate xhtml代碼與不同類的標籤,如.info,.delete和.edit。

我想要做的東西,當我點擊我的.info鏈接。 我曾嘗試這樣的代碼:

$('a.info').click(function (e) { 
    e.preventDefault(); 
    alert('Do stuff'); 
}); 

忽略了最低在所有的工作,沒什麼反應。螢火蟲給我沒有錯誤,所以我不知道如何解決問題。

$('a').click(function (e) { 
    e.preventDefault(); 
    alert('Do Stuff 2'); 
}); 

適用於網站上的所有鏈接,但不適用於從php代碼生成的鏈接。

我的代碼:

$(function(){  
$.ajax({ 
    type: "POST", 
    url: 'users.php', 
    data: 'getall=true', 
    success: function(r) { 
     $(' #content ').html(r); 
    }, 
    error: function() { 
     alert('Error'); 
    } 
}); 

$('a.info').click(function (e) { 
    e.preventDefault(); 
    alert('Do Stuff'); 
}); 


$('a').click(function (e) { 
    e.preventDefault(); 
    alert('Do Stuff 2'); 
}); 

});

+0

你應該添加生成的標記的相關片段 - 因爲這似乎是問題的根源... – flitzwald 2011-02-11 10:58:00

回答

4

使用.live

$('a.info').live('click', function (e) { 
    e.preventDefault(); 
    alert('Do stuff'); 
}); 


$('a').live('click', function (e) { 
    e.preventDefault(); 
    alert('Do Stuff 2'); 
}); 
+0

我一直在類似的情況下使用它,它非常方便。 – Chris 2011-02-11 11:03:16

0

它看起來像你得到從AJAX請求的HTML。點擊函數將爲您在調用時知道的對象設置處理程序 - 在這種情況下,它是在DOM被加載之後但返回AJAX請求之前。

來處理加載DOM後添加任何對象的Click事件,使用live功能:

$('a.info').live('click', function (e) { 
    e.preventDefault(); 
    alert('Do stuff'); 
}); 
1

使用$ .live。 $ .click將點擊事件註冊到當前存在的對象上。使用$ .live意味着當新元素添加到頁面時,您的點擊事件基本上會重新註冊。