0

感谢您抽出宝贵的时间,

我正在为管理员审查提交的目标的应用程序页面工作。每个目标都是 3 个不同表格中的一个。“review”、“complete”和“submitted”是三个表。

每个都有一个引导 btn-group,可以根据当前的状态选择批准、恢复或拒绝。当状态改变时,包含的目标被删除并附加到适当的表中。

您可以在此处查看功能示例:http: //jsfiddle.net/9mYZD/

现在问题来了:

  • 当其中一个被移动到另一个表时,我需要它来切换下拉列表中的链接,以便它们与新表中的其他链接匹配。
  • 我有代码可以做到这一点,但我正在尝试编写一个可行的语句

    tableID = clicked.closest('table').attr('id');
    if(tableID = 'approve-objectives-submitted'){
                    clicked.html('<i class=" icon-undo"></i> Revert').removeClass('action-ok').addClass('action-revert');
                    }
                    else if(tableID = 'approve-objectives-review'){
                    clicked.html('<i class=" icon-ban-circle"></i> Deny').removeClass('action-ok').addClass('action-deny');
                    }
    

如果您查看提供的小提琴,我已将此代码添加到批准功能。如果您随后从提交中批准一个,则切换效果很好,如果您从审核中批准一个(它们附加在列表的最底部),那么您可以看到两个还原按钮,而不是一个拒绝和一个还原。

如果有人知道如何使这个条件语句起作用。或者也许我只需要退后一步,从另一个角度看待这个问题。任何想法都会很棒。

谢谢!


if(tableID = 'approve-objectives-submitted')

你需要 === 不 = 在条件

这是我立即看到的

4

2 回答 2

1

我注意到了几件事。

我已经更改了您的代码approve: function ()并提出了一个新的小提琴http://jsfiddle.net/5aVCp/

首先,您新添加的表格行正在丢失其目标 ID,并且您从表格行获取 HTML 的方式留下了一个非常小的时间窗口,在您获得 HTML 之前,该元素可能会从 DOM 中删除。

其次,当您替换最后一个 div 的内容时,btn-group类 div 正在消失。也许我错过了这部分正在做的事情。

最后,我根据其他行值修改标签的方法是使用您已经包含在锚标记上的属性在将它们附加到新表并根据需要操作 HTML 后简单地找到它们:

   var dataId = clicked.attr('data-id');
   var ok = $('a[data-id="' + dataId + '"].action-ok');
   var deny = $('a[data-id="' + dataId + '"].action-deny');
   deny.removeClass('action-deny').addClass('action-revert').html('<i class=" icon-undo"></i> Revert');
   ok.removeClass('action-ok').addClass('action-deny').html('<i class=" icon-ban-circle"></i> Deny');

您可以为其他类型的状态执行此操作,只需确保在更新它们的任何类之前运行选择器,否则您可能会发现您更改了一个并再次重新选择它。

希望这会有所帮助。

于 2012-11-06T03:51:59.330 回答
1
if(tableID = 'approve-objectives-submitted')

你需要 === 不 = 在条件

这是我立即看到的

于 2012-11-06T02:47:53.727 回答