jQuery 按条件选择表格中的最后一个单元格

发布于 2024-11-05 04:59:02 字数 441 浏览 0 评论 0原文

我有两张桌子。第一行高,包含 7 个 td。

第二个有 6 行高,包含 7 个 td。

当用户单击第一个表中的 td 时,表 2 中相应列中具有类“x”的最后一个单元格将删除类“x”并添加类“y”。

因此,下次单击同一列时,其上方的单元格将删除类“x”并添加类“y”,依此类推...

我已设法使用允许您选择的插件来选择相应的列'nth-col':

$('#table1 td').click(function(){

    var col = ($(this).index()+1);

    $('#table2 td:nth-col('+col+')').removeClass('x').addClass('y');

});

但就是不知道如何选择行!

如果你想知道我在说什么,那么基本上我正在尝试建立连接四。

I have two tables. The first is one row high and contains 7 tds.

The second is 6 rows high and contains 7 tds.

When a user clicks a td in the first table, the last cell in table 2 in the corresponding column that has class 'x', has class 'x' removed and class 'y' added.

So next time when the same column is clicked, the cell above it would have class 'x' removed and class 'y' added, and so on...

I have managed to select the corresponding column using a plugin that allows you to select 'nth-col':

$('#table1 td').click(function(){

    var col = ($(this).index()+1);

    $('#table2 td:nth-col('+col+')').removeClass('x').addClass('y');

});

But just cant figure out how to select the row!

If you are wondering what I'm going on about then basically I'm trying to make connect four.

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

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

发布评论

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

评论(2

空名 2024-11-12 04:59:02

您无需任何插件即可完成。以相反的顺序遍历各行,检查第 N 个 td 元素。在找到第一个之后退出循环。这是一个简单的解决方案,但可能无法正确优化以处理数千行/列。 :)

现场演示:http://jsfiddle.net/yydZ3/1/

//Set all classes to x
$('td').addClass('x');

$('td').click(function(){
    var $this = $(this);
    var col = $this.index();

    //Iterate through rows in reverse order
    $($('tr').get().reverse()).each(function(){
        var $cell = $(this).find('td:eq('+col+')');
        if($cell.hasClass('x')){
            //Found one, this must be the last in this column
            $cell.removeClass('x').addClass('y');

            //Exit out of each loop
            return false;
        }
    });
});

You can do it without any plugins. Go through the rows in reverse order, check the Nth td element. Exit from the loop after the first one you've found. This is a simple solution, might not be properly optimised to handle thousands of rows/columns though. :)

Live demo: http://jsfiddle.net/yydZ3/1/

//Set all classes to x
$('td').addClass('x');

$('td').click(function(){
    var $this = $(this);
    var col = $this.index();

    //Iterate through rows in reverse order
    $($('tr').get().reverse()).each(function(){
        var $cell = $(this).find('td:eq('+col+')');
        if($cell.hasClass('x')){
            //Found one, this must be the last in this column
            $cell.removeClass('x').addClass('y');

            //Exit out of each loop
            return false;
        }
    });
});
滥情稳全场 2024-11-12 04:59:02

选择适当的 tr(行),然后选择 td 元素(单元格):

$('#table2 tr:eq('+row+') td:eq('+col+')').removeClass('x').addClass('y');

参见一个非常基本的测试:http://jsfiddle.net/MgTGf/1/

Select the adequate tr (row), then the td element (cell):

$('#table2 tr:eq('+row+') td:eq('+col+')').removeClass('x').addClass('y');

See a very basic test: http://jsfiddle.net/MgTGf/1/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文