2012-03-15 71 views
1

我有一個td的3x3表,每個都有id(id ='a1'... id ='c3')。我希望能夠點擊9個TD中的任何一個,並提醒該TD的ID。Rails 3 jQuery:如何提醒td的ID

這是我的CoffeeScript(在資產管道)

$(document).ready -> 
$("td").click -> 
    alert(#I would like to alert the id of whichever of the 9 td cell's have been clicked on) 

這裏是我的index.html.erb

<table> 
<tbody> 
    <tr> 
    <td id='a1'>A1</td> 
    <td id='b1'>B1</td> 
    <td id='c1'>C1</td> 
    </tr> 

    <tr> 
    <td id='a2'>A2</td> 
    <td id='b2'>B2</td> 
    <td id='c2'>C2</td> 
    </tr> 

    <tr> 
    <td id='a3'>A3</td> 
    <td id='b3'>B3</td> 
    <td id='c3'>C3</td> 
    </tr> 
</tbody> 
</table> 

我在JS可怕的,所以任何幫助表示讚賞!

回答

2
$('td').click: (e)-> 
    alert $(@).id 

在CoffeeScript中

而且同樣,存儲用戶數據的HTML元素非常容易與數據 - *屬性,例如:

<td data-id="42"></td> 

並獲得這個ID很容易與jQuery data方法如下:

var id = $('td').data('id'); 
+0

這讓我朝着正確的方向,謝謝! 這最終是什麼工作: $(document).ready - > $(「td」)。click - > alert @id – 2012-03-15 18:11:54

2

首先,使用jQuery on產生比click處理器連接到每個td更好的性能,特別是如果你有很多的td S:

$('table').on 'click', 'td', (event) -> 
    # event.currentTarget is the td which was clicked 
    alert event.currentTarget.id 

event.currentTarget將是一個DOM元素對象,所以每個屬性將作爲對象的屬性。其他答案$(this).id是錯誤的,因爲$(this)(或$(event.currentTarget))是一個jQuery對象,並且這樣的屬性可用於attr方法:$(this).attr('id')

+0

我正在調查此權利。感謝您解釋更好的方法!總是善於學習'最佳實踐',或者至少'更好的實踐'。 – 2012-03-15 18:13:44