我有3个标签,根据点击的标签,我希望更改表单操作。 我有这个:
$('#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')
}
});`
实际上是第一次将操作更改为错误的表单操作,然后第二次单击更正表单操作。
第一次点击我需要这个是正确的。
答案 0 :(得分:0)
我认为这种情况正在发生,因为您的代码先运行,而'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);
});
这至少可以帮助您确定代码是否因“太快”运行而导致
答案 1 :(得分:0)
..取决于单击哪个选项卡,我希望更改表单操作。
可能有一种更简单的方法可以做到这一点,但由于您没有向我们提供您的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');
}
});