点击功能需要2次点击

问题描述:

我有3个选项卡,取决于哪个选项卡是点击我希望表单动作改变。 我有这样的:点击功能需要2次点击

$('#myTab li').click(function(){ 
    if ($('#action1').hasClass('active')){ 
     $('#my-form').attr('action', '/order/signup1') 
    } 
    else if ($('#action2').hasClass('active')){ 
     $('#my-form').attr('action', '/order/signup2') 
    } 
    else if ($('#action3').hasClass('active')){ 
     $('#my-form').attr('action', '/order/signup3') 
    } 

});` 

是实际发生的是,第一个改变行动错形式的行动,那么第二次点击修正形式的行动。

我需要这是正确的形式第一次点击。

+1

'myTab'不是一个有效的选择。小心分享HTML以及..? – 2014-11-21 11:29:47

+1

您有''和''元素? – nnnnnn 2014-11-21 11:29:53

+0

您需要使用具有if/else或开关的计数器手动对其进行编码。一旦你完成了一次,格式就很简单了。我可以详细说明你是否在我的评论中没有得到重点。 – CODeeerrrrrrrr 2014-11-21 11:31:23

..depending造成了哪个选项卡单击希望表格行动改变。

可能有一个更简单的方法来做到这一点,但因为你没有给我们你的HTML,我不能确定。无论如何,你不需要这里的active课程。你可以只用单击元素的id这样的:this.id

下面的代码:

$('#myTab li').click(function(){ 
    if (this.id === 'action1'){ 
     $('#my-form').attr('action', '/order/signup1'); 
    } 
    else if (this.id === 'action2'){ 
     $('#my-form').attr('action', '/order/signup2'); 
    } 
    else if (this.id === 'action3'){ 
     $('#my-form').attr('action', '/order/signup3'); 
    } 
}); 

演示:http://jsfiddle.net/8v8070eh/1/

+0

非常感谢你!完美的作品! – stickymits 2014-11-21 12:13:51

我认为这是因为你的代码先运行,'active'类尚未设置。你可以尝试的一件事是将你的代码封装在setTimeout()中。

$('#myTab li').click(function(){ 
    setTimeout(function() { 
     if ($('#action1').hasClass('active')){ 
      $('#my-form').attr('action', '/order/signup1') 
     } 
     else if ($('#action2').hasClass('active')){ 
      $('#my-form').attr('action', '/order/signup2') 
     } 
     else if ($('#action3').hasClass('active')){ 
      $('#my-form').attr('action', '/order/signup3') 
     } 
    }, 100); 
}); 

这至少应该帮助您确定它是由你的代码运行“过快”