如何使表格中除最后一列之外的整行都可作为链接单击?

发布于 2024-12-06 06:01:52 字数 664 浏览 0 评论 0原文

我设法使表中的行可单击并链接到 元素的 href 属性。然而,当我让选择器仅选择除最后一列之外的行时,我开始遇到问题。

使用下面的代码,可单击行仅对整行有效,除了最后一个单元格,这是我所需要的,因为我在此单元格中有管理链接(用于激活、编辑、删除等行的链接)。唯一的问题是,无论您单击哪一行,它都会将您带到最顶行的链接。我认为这与我的 find('td a') 选择器有关,但我无法弄清楚。

$('#dataTable tr td:not(:last-child)').click(function () {
    location.href = $('#dataTable tr').find('td a').attr('href');
});  

悬停效果很好,只有当鼠标悬停在除最后一列之外的任何单元格上时才会更改指针。

$('#dataTable tr td:not(:last-child)').hover(
    function() { 
        $(this).css('cursor','pointer');
    },
    function() {
        $(this).css('cursor','auto');
    }
);

I managed to get the rows in my table to be clickable and linked to the href attribute of the <a> element. However I started to have issues when I made the selector only select the rows except the last column.

With the below code the clickable row is only active for the entire row except the last cell which is what I require as I have administrative links in this cell (links to activate, edit, delete etc rows). The only problem is that no matter which row you click on it sends you to the link in the very top row. I think this has something to do with my selector for the find('td a') but I can not figure it out.

$('#dataTable tr td:not(:last-child)').click(function () {
    location.href = $('#dataTable tr').find('td a').attr('href');
});  

The hover works great and only changes the pointer if the mouse is over any cell except the last column.

$('#dataTable tr td:not(:last-child)').hover(
    function() { 
        $(this).css('cursor','pointer');
    },
    function() {
        $(this).css('cursor','auto');
    }
);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

醉酒的小男人 2024-12-13 06:01:52

这是因为你正在获取表中的所有 tr,然后将返回找到的第一个锚点,尝试像这样更改它:

$('#dataTable tr td:not(:last-child)').click(function ()    {
 location.href = $(this).parent().find('td a').attr('href');
});

这意味着它将获取单击的元素 $(this) 作为 jquery 对象,并且然后转到它的父级。 (行元素)。

It is because you are getting all the tr's in the table and then the first anchor that is found will be returned, try changing it like this:

$('#dataTable tr td:not(:last-child)').click(function ()    {
 location.href = $(this).parent().find('td a').attr('href');
});

what it means is it will get the clicked element $(this) as a jquery object, and then go to its parent. (the row element).

心在旅行 2024-12-13 06:01:52
$('#dataTable tr td:not(:last-child)').click(function ()    {
 location.href = $(this).parent().find('td a').attr('href'); 
});  

我认为这应该有效。您的代码始终从它在数据表中找到的第一个“td a”获取href。此代码采用在您要查找的特定 td 中找到的 a 。

$('#dataTable tr td:not(:last-child)').click(function ()    {
 location.href = $(this).parent().find('td a').attr('href'); 
});  

I think this should work. Your code always takes the href from the first "td a" it finds inside your dataTable. This code takes the a it finds in the specific td you are looking for.

旧伤还要旧人安 2024-12-13 06:01:52

替代答案。

HTML:

<table>
  <tbody>
    <tr data-href="#">
      <td>first</td>
      <td>second</td>
      <td>
        <div class="dropdown">...</div>
      </td>
    </tr>
  </tbody>
</table>

JS:

jQuery(document).ready(function ($) {
  $("tbody").on('click', 'tr td:not(:last-child)', function () {
    window.location = $(this).parent().data("href");
  });
});

Alternative answer.

HTML:

<table>
  <tbody>
    <tr data-href="#">
      <td>first</td>
      <td>second</td>
      <td>
        <div class="dropdown">...</div>
      </td>
    </tr>
  </tbody>
</table>

JS:

jQuery(document).ready(function ($) {
  $("tbody").on('click', 'tr td:not(:last-child)', function () {
    window.location = $(this).parent().data("href");
  });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文