2013-07-25 26 views
-1

我知道有一個重複的(jQuery: How to get ID of dynamically generated element?),但我嘗試瞭解決方案,但無法解決我的問題。從Ajax生成的DOM元素返回ID

一個AJAX/jquery的查詢返回了該檢查時的表返回一個適當地形成表:

<table border="1"> 
<tbody> 
<tr><td>Example</td><td class="del" id="1">Delete</td></tr> 
<tr><td>Example2</td><td class="del" id="2">Delete</td></tr> 
</tbody> 
</table> 

jQuery代碼是:

$('.del').click(function(){ 
     var id = $(this).attr("id"); 
     alert(id); 
    }); 

如果我直接在HTML把表它工作正常,但是當它從ajax生成它甚至不會生成警報(並且chrome不會返回錯誤)。

NB我提前appologise,如果它是一個愚蠢的,像一個錯誤的ID,但我一直試圖找出這3/4小時,我卡住了!

編輯:

Ajax調用是:

$.ajax({type : 'POST', url : 'response.php'}).done(function(response){ 
     $('#result').html(response); 
    }); 
+0

你必須等待,直到你點擊事件綁定到它之前就存在元素重寫你的JavaScript。 –

+0

委託事件使用.on() –

+0

@KevinB我該怎麼做(我是否需要另外一個$(document).ready()裏面?) – Sebiddychef

回答

2

如下

$(document).on("click", ".del", function(){ 
var id = $(this).attr("id"); 
alert(id); 
});  // jQuery 1.7+ 

請參考下面的文章查看詳細 http://api.jquery.com/on/

+1

live()已經從現在的某個時間被刪除了 –

+1

並且不存在於jQuery 2.0.3中,它被當作在評論中使用的當前版本提及。 –

+0

請仔細閱讀我提供的所有可能的變化,可用不同的版本。 –

0

您可使用evals所有加載JS從服務器負載功能。 使用$("#id").load(<url>,<callback of success>);,而不是

http://api.jquery.com/load/

+0

這對新創建的元素的事件處理有什麼幫助? –

+0

一般來說,這會比get()和()和ajax()更可取? – Sebiddychef

+0

不,它不適用於get()post()和ajax()。 使用也是更好的選擇。 –

1

這是使用委託,我會建議使用,而不是爲每個新創建的元素設置多個處理程序。

$(document).on('click','.del',function(){ 
     var id = this.id; 
     alert(id); 
    }); 

使用最接近靜態容器代替文檔委託目標會更好,但我不知道你的代碼...

DEMO

0

哪裏Ajax調用?它是如何構成的?

根據您的ajax調用,您可以將該函數放在回調函數中,然後它將附加到該元素。