Jquery 切换链接href,具体取决于哪个<;表>;按钮被附加到

Jquery 切换链接href,具体取决于哪个<;表>;按钮被附加到,jquery,html,drop-down-menu,twitter-bootstrap,Jquery,Html,Drop Down Menu,Twitter Bootstrap,谢谢你抽出时间 我正在为一个应用程序的页面上工作,在这个页面上,管理员会审查提交的目标。每个目标是三个不同表中的一个。“审查”、“完成”和“提交”是三个表格 每个btn上都有一个引导btn组,根据其当前的状态可以选择批准、恢复或拒绝。当状态更改时,包含目标的列表将被删除并附加到相应的表中 您可以在此处看到一个功能示例: 现在问题是: 当一个移动到另一个表时,我需要在下拉列表中切换链接,以便它们与新表中的其他链接匹配 我有代码来做这件事,但我试图写一个语句,将工作 tableID = clic

谢谢你抽出时间

我正在为一个应用程序的页面上工作,在这个页面上,管理员会审查提交的目标。每个目标是三个不同表中的一个。“审查”、“完成”和“提交”是三个表格

每个btn上都有一个引导btn组,根据其当前的状态可以选择批准、恢复或拒绝。当状态更改时,包含目标的列表将被删除并附加到相应的表中

您可以在此处看到一个功能示例:

现在问题是:

  • 当一个移动到另一个表时,我需要在下拉列表中切换链接,以便它们与新表中的其他链接匹配
  • 我有代码来做这件事,但我试图写一个语句,将工作

    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');
                    }
    
    tableID=clicked.closest('table').attr('id');
    如果(tableID=‘批准已提交的目标’){
    单击.html('Revert').removeClass('action-ok').addClass('action-Revert');
    }
    else if(tableID=‘批准目标审核’){
    单击.html('Deny').removeClass('action-ok').addClass('action-Deny');
    }
    
如果您查看所提供的fiddle,我已经将此代码添加到approve函数中。如果您随后从提交中批准一个,则切换效果非常好,如果您从审阅中批准一个(它们附加在列表的最底部),则您可以看到是两个还原按钮,而不是一个拒绝和一个还原按钮

如果有人对如何使这个条件语句工作有想法。或者我只是需要退一步,从另一个角度来看这个问题。任何想法都很好

谢谢大家!

if(tableID = 'approve-objectives-submitted')
您需要===不=处于状态


这就是我立即看到的

我注意到了一些事情

我已经更改了您的
approve:function()
中的代码,并安装了一个新的小提琴

首先,新添加的表行丢失了它的目标id,从表行获取HTML的方式留下了一个非常小的时间窗口,在获取HTML之前可以从DOM中删除元素

其次,当您替换最后一个div的内容时,
btn组
class 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');
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('revert');
ok.removeClass('action-ok').addClass('action-deny').html('deny');
您可以对其他类型的状态执行此操作,只需确保在更新选择器的任何类之前运行选择器,否则您可能会发现您更改了一个并重新选择它


希望这会有所帮助。

您的if语句应该有tableID.hasClass(“批准提交的目标”)。那是打字错误吗?嘿,谢谢你的回复。您对approve功能的处理非常好。但是当我把它应用到revert和deny函数时,我得到了一个奇怪的bug。假设我从“已完成”恢复,第一个按其应工作,然后下一个将使最后单击的一个和刚刚单击的一个再次启动。这将使旧的有2个批准选项。然后下一次在所有3。我掏出了我的贴子来拉小提琴。我不确定如何向您展示这个问题。@MikeLucid我已经更新了小提琴,我已经为您的审阅对象添加了一个新方法。jQuery异步完成动画之类的事情,因此有时很难确定执行的时间。您会注意到,从最后一个slideUp()的回调中,每个操作都会调用新方法。我已经在小提琴上添加了注释,这样你就可以看到我为什么把代码放在这里了。我只是想说谢谢你花时间编写这个方法。通过阅读您的评论并将其实现回完整的服务器端功能,我学到了很多。希望你的一天很有成果。上帝保佑。