2015-08-28 38 views
1

我有一个链接如下。JQuery href防止默认问题与锚点

<a href="#" id="tab3Link">Tab 3</a> 

选项卡2中,当选项卡3被点击时,我想先验证于表2形式是否被正确填充。

$("#tab3Link").click(function(e){ 
     e.preventDefault(); 
     $("#tab3Link").prop("href", "#"); 
      if(validateTab2()){ 
       $("#tab3Link").prop("href", "#tab3Info"); 
       return true; 
      }else{ 
       return false; 
      } 
    }); 

#tab3Info锚点应该把页面换成新的div。但点击不会发生。但是,如果我在URL的末尾手动追加#tab3Info并按下回车键,页面会移至新标签。所以在上面的函数中,虽然href被改变,但点击函数不会发生。

当JQuery 1.4.2与Jquery mobile 1.1.0一起使用时,这工作正常。 JQuery升级到1.9.1并且Jquery mobile升级到1.3.2时会出现问题。

回答

1

而是真正的回报的,请尝试:jQuery的prop()方法

$(this).unbind('click'); 
    $(this).click(); 
+0

工作就像一个魅力。谢谢... –

2

使用并不适用,因为它设置元素的属性(在你的情况#tab3Link)。但是你想操纵位置值。

相反的:

$("#tab3Link").prop("href", "#tab3Info"); 

您可以使用:

window.location.hash = 'tab3Info'; 

或:

window.location += '#tab3Info'; 
+0

在previos版本的代码中,$(“#tab3Link”)。attr(“href”,“#tab3Info”);正在使用。它没有与我在问题中提到的jquery升级一起工作。这就是为什么我用prop替换attr。它仍然没有工作。 siracoj的答案奏效了。我也会尝试这个。 –