2013-07-25 64 views
1

我想添加一個鏈接到除了一個td以外的整行。我設法使整個行可點擊以下如何在Rails中連接一組​​?

<tbody> 
    <% @inbox_messages.each do |message| %> 
     <tr data-link="<%= show_received_message_path(message) %>"> 
      <td> 
       <%= check_box_tag 'select' %> 
      </td> 
      <td> 
       <%= message.received_sender %> 
      </td> 
      <td> 
       <%= message.subject %> 
      </td>   
      <td> 
       <%= message.created_at %> 
      </td> 
     </tr> 
    <% end %> 
</tbody> 

,並使用以下的CoffeeScript

$ -> 
    $("tr[data-link]").click -> 
     window.location = $(this).data("link") 

但是這樣做的問題是,當我勾選複選框,將其重定向我到show_received_message_path我不要。

我試過用divs搞亂,但是我已經瞭解到它無效的HTML把div放在trs裏面。

有沒有辦法鏈接除複選框之外的所有行?

回答

1

在你的問題的一個簡單方法是附加點擊處理程序的<td>!而非的<tr>秒,然後使用jQuery的:not:has:checkbox選擇排除包含複選框的單元格。事情是這樣的:

$('tr[data-link] td:not(:has(:checkbox))').click -> 
    $tr = $(@).closest('tr') 
    #... 

還要注意單擊處理程序使用closest,我們使用,因爲@將是<td>data-link是在<tr>;如果你願意,你可以使用parent而不是closestclosest只是讓我更清楚。

演示:http://jsfiddle.net/ambiguous/qH282/