2012-03-15 65 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