2014-05-16 95 views
-2

我試圖獲取動態生成的表的id屬性。所以,如果我點擊第一個鏈接,我想獲得「editEmploee-4」。jQuery獲取鏈接ID

<table id="example" class="table span12 table-bordered table-hover"> 
    <thead> 
     <tr> 
     <th>Firstname</th> 
     <th>Lastname</th> 
     <th>Edit</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
     <td>Person 1</td> 
     <td>Name Person 1</td> 
     <td><a href="#" class = "editDialog" id="editEmployee-4"><img src="img/edit.png" height="20" /></a></td> 
     </tr> 
     <tr> 
     <td>Person 2</td> 
     <td>Name Person 2</td> 
     <td><a href="#" class = "editDialog" id="editEmployee-5"><img src="img/edit.png" height="20" /></a></td> 
     </tr> 
     <tr> 
     <td>Person 3</td> 
     <td>Name Person 3</td> 
     <td><a href="#" class = "editDialog" id="editEmployee-47"><img src="img/edit.png" height="20" /></a></td> 
     </tr> 
    </tbody> 
</table> 

我試過這個代碼,但我總是得到相同的ID。

var data = $("a[id][class=editDialog]").attr('id'); 

你有什麼想法如何獲得動態生成的鏈接ID?

+0

你什麼時候這樣做?在'onclick'處理程序中? –

回答

5

事件委託:

$(document).on("click", "#example a", function() { 
    console.log(this.id); //id of clicked link 
}); 

不知道有多少表是動態生成的,但你通常要使用的容器元素,而不是document

2

可以使用this.id的點擊處理程序中的主播:

$('.editDialog').click(function() { 
    var data = this.id; 
}); 

但是因爲你的表是動態生成的,所以所有的事件對這個表和它裏面的元素都是不可用的,在這種情況下你需要應用事件委託技術來附加這些事件,比如點擊你的情況到這些新的添加的元素:

$(document.body).on("click", "#example a", function() { 
    var data = this.id; 
}); 

實際上,它會在綁定委派的事件到最近的靜態父,而不是$(document)更有效率。

5
$(".editDialog").click(function(e) 
{ 
    e.preventDefault(); 
    var myID = $(this).attr("id"); 
// do something with myID 
}) 
+1

爲什麼選擇jQuery?爲什麼不'this.id'? –

+0

@ Karl-AndréGagnon習慣的力量我猜:) – andrew

+0

這些都是壞習慣:) –

0

正如我們在所有的標籤類「editDialog」。我們可以在我們的jQuery或Java腳本代碼中使用此:

的JQuery ::

$('.editDialog').bind('click', function(){ 
alert($(this).attr('id')); 
}); 

Java腳本::

$('.editDialog').bind('click',function(){ 
var clickedID = this.id; 
alert(clickedID); 
});