Rails 3 jQuery: как предупредить идентификатор тд - PullRequest
1 голос
/ 15 марта 2012

У меня есть таблица 3x3 из td, каждая с идентификаторами (id = 'a1' ... id = 'c3'). Я хотел бы иметь возможность нажать на любой из 9 тд и предупредить идентификатор этого тд.

Вот мой 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 ]

2 голосов
/ 15 марта 2012

Во-первых, использование jQuery на дает лучшую производительность, чем присоединение обработчика 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').

2 голосов
/ 15 марта 2012
$('td').click: (e)->
  alert $(@).id

То же самое в CoffeeScript

Кроме того, сохранение пользовательских данных с помощью html-элемента очень просто с помощью атрибутов data- *, например:

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

И получить этот идентификатор легко с помощью метода jQuery data следующим образом:

var id = $('td').data('id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...