我如何制作一组<td>s可在Rails中链接

How can I make a group of <td>s linkable in Rails?

本文关键字:gt td 可在 Rails 链接 lt 一组 何制作      更新时间:2023-09-26

我试图添加一个链接到除了一个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。

是否有任何方法可以链接除复选框之外的所有行?

解决问题的一个简单方法是将单击处理程序附加到<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/