2009-12-04 44 views
0

所以我嘗試了可信的谷歌,但沒有找到滿意的解決方案。基本上,我不知道我在做什麼應該工作。對返回的json結果使用bind('click')/添加到DOM

我想做一個返回JSON結果的ajax調用。我遍歷這個結果,並寫這樣的字符串,並推到#results跨度(這一切工作正常):

var str=''; 
for (var n=0;n<data.length; n++){ 
    str=+"<div class='game_name'>" + data[n]['name']+"</div><div class='game_id'>"+ data[n]['id'] +"</div>"; 

} 
$('#results').html(str); 

,然後(通過,然後我的意思是被編碼到頁面返回結果之前, )使用GAME_NAME類這樣的(這部分不工作綁定一個click事件,但對於一些手在開始編碼到頁面)正常工作:

$(".game_name").bind('click',function(){ 
    alert('here i am'); 
}); 

但返回的結果不具有關聯綁定它。我怎樣才能做到這一點,以便點擊響應?有沒有辦法引發一個事件,讓DOM知道新元素已經添加到DOM中?或者我只是想念這應該如何工作?

感謝您的幫助

回答

3

使用live()代替bind()

$(".game_name").live('click', function() { 
    alert('here i am'); 
}); 
0

你看着jQuery的live事件?它將允許您爲所有動態添加的元素綁定click

+0

謝謝大家!只是一名兼職jQuery開發人員 – timpone 2009-12-04 18:02:35

0

如果你一定要運行$('#results').html(str);線後您的結合,你的代碼應該工作,但我想你可能會更好這裏,註冊一個live事件監聽器,它說「與此選擇器匹配的所有項目都應綁定到此監聽器,即使它們在執行此代碼後的某個時間點添加到DOM」:

$(".game_name").live('click',function(){ 
    alert('here i am'); 
});