2012-03-07 103 views
1
$.each(data, function(i,data) { 
...[cut]... 
    +"<a id=\"contact_"+data.id+"_delete\" href=\"/user/contact/delete/ticket_id/"+data.ticket_id+"/contact_id/"+data.id+"\">Delete</a>" 
...[cut]... 
    $("#contact_"+data.id+"_delete").live('click',function() { 
     var href = this.attr('href'); 
     alert(href); 
     return false; 
    }); 

我有下面的代碼示例(爲簡單起見切出不相關的部分)。我擁有的是一個重繪表格行(tr's)的函數。每行都在調用url/user/contact/delete/ticket_id/{$ ticket_id}的行末尾有一個'delete'鏈接然後(在同一個循環中),我想綁定一個click事件到新創建的鏈接。但是,當我點擊鏈接時,瀏覽器離開頁面並轉到網址,而不是轉到點擊鏈接功能。問題綁定事件動態創建元素與jQuery

首先,我是否正確地綁定了點擊事件?

其次,我是否正確檢索元素的'href'屬性?

+0

你使用jQuery 1.7嗎? – 2012-03-07 21:13:02

+0

此刻:1.3.0(google cdn) – 2012-03-07 21:15:00

+0

fyi,我將其更改爲1.7.1,並且仍然得到相同的結果 – 2012-03-07 21:16:24

回答

3

除了什麼@charlietfl說,你可以有一個處理程序的所有刪除元素。只要將相同的類添加到所有的人,像class="contact_delete",然後用.on()目標個個:

+'<a class="contact_delete" id="contact_'+data.id+'_delete" ... 

注意,如果使用單引號,您不必逃避所有的雙引號。

$('body').on('click', '.contact_delete', function() { 
    var href = $(this).attr('href'); 
    alert(href); 
    return false; 
}); 
+0

好吧,照顧它,有時候,我認爲在我處理碎片時需要線性化,但要處理元素。我忘了退一步,偶爾看看大圖。我不確定爲什麼當我返回false時,它是通過「鏈接」頁面進行的,但通過移動事件並將事件附加到身體上,這很好,謝謝你和@charlietfl – 2012-03-07 21:59:35

+0

以及@ DanielWhite也是如此 – 2012-03-07 22:01:56

2

你需要用「本」在$(),以使其成爲一個jQuery對象,以便使用jQuery方法

var href = $(this).attr('href'); 

現場()被棄用(但是在1.7.1工作),所以你應該考慮使用更多的on()方法

相關問題