JQuery href 防止锚点出现默认问题

JQuery href preventdefault issue with anchor

我有一个 link 如下。

<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 移动版 1.1.0 一起使用时,这工作正常。 JQuery 升级到 1.9.1 且 Jquery 移动版升级到 1.3.2 时出现问题。

而不是 return true,尝试:

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

jQuery prop() 方法的使用不适用,因为它在元素中设置了 属性(在您的情况下为 #tab3Link)。但是您想操纵位置值。

而不是:

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

您可以使用:

window.location.hash  = 'tab3Info';

或:

window.location += '#tab3Info';