1

我正在尝试将链接添加到除一个 td 之外的整行。我设法通过以下方式使整行可点击

<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>

并使用以下咖啡脚本

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

但是,问题在于,当我勾选复选框时,它会将我重定向到show_received_message_path我不想要的地方。

我尝试过使用 div,但是我了解到将 div 放入 trs 是无效的 html。

有没有办法链接除复选框之外的所有行?

4

1 回答 1

1

解决您的问题的一种简单方法是将单击处理程序附加到<td>s 而不是<tr>s,然后使用 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/

于 2013-07-25T16:55:46.537 回答