【问题标题】:How do I get the current cell in a table using jQuery?如何使用 jQuery 获取表格中的当前单元格?
【发布时间】:2017-07-27 21:34:04
【问题描述】:

所以我正在尝试使用 HTML 和 jQuery 创建一个实时更新表。每行都包含费用,并且行中的每个单元格都附加了一个特定的公式。如果用户编辑了一行中的任何一个单元格,那么该行中的其他单元格将反映该更改。

例子:

[Cell 1] [Cell 2] [Cell 3]

[Cell 1] = 1;
[Cell 2] = [Cell 1] * 2
[Cell 3] = [Cell 1] * 12

如果表格在 blur 或 keyup 上更新,我会很高兴,但我不知道如何获取当前单元格,并更新该特定行中的其他单元格。基本上,我会检查行中的哪个单元格已被编辑,并相应地更新其他单元格。

if(cell1 was updated) { update cell2, cell3 }

else if(cell2 was updated) { update cell1, cell3 }

else if(cell3 was updated) { update cell1, cell2 }

我尝试这个来获取当前单元格的 ID,并使用它来获取该行中另一个单元格的值。没用:

var id;

$(".moneyTable input").focus(function () {
             id = this;
        });

$('.moneyTable input').blur(function() {
            calculateRow(id);
        });

function calculateRow(id) {
        var a = $(id).closest('tr').children('td:eq(2)').text();
        alert(a);
    }

【问题讨论】:

  • 你是如何在行中附加一个带有特定单元格的公式的?例如,你可以创建任何JSFiddle 吗?
  • 我还没有完成那部分。我只是要获取用户刚刚更新的单元格的值并从该单元格计算其他值。这是简单的乘法运算。

标签: jquery cells


【解决方案1】:

“我不知道如何获取当前单元格,并更新该特定行中的其他单元格”

当您的事件处理程序被调用时,this 将是对相关元素的引用,因此您可以从那里找出它属于哪一行:

$('.moneyTable input').blur(function() {
    var $thisInput = $(this),
        $thisTD = $thisInput.parent(), // or $thisInput.closest("td")
        $thisTR = $thisInput.closest("tr"),
        $otherCells = $thisTR.find("input").not(this); // and so forth
});

至于检查单击的单元格是单元格 1、2 还是 3,有几种方法可以做到这一点。一种是给他们上课class="cell1"等等,然后这样做:

if($thisInput.hasClass("cell1")) {
    // do something

或者查看行内父td的.index()

if($thisTD.index() === 1) {
    // second cell (zero-based indexes)

【讨论】:

  • 这是否能够识别刚刚“模糊”的单元格,还是会丢失此引用?
  • 它将是刚刚模糊的那个。确实。这就是模糊事件的重点......
【解决方案2】:

我认为您正在寻找的是类似 exel 的插件,它可以让您的表格像电子表格一样工作

试试这个插件我想这就是你想要的

http://www.pengoworks.com/workshop/jquery/calculation/calculation.plugin.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-27
    • 2011-08-02
    • 1970-01-01
    • 2012-06-25
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多