通过URL打开jQuery模式时停止滚动到ID

通过URL打开jQuery模式时停止滚动到ID,jquery,events,dialog,overlay,modal-dialog,Jquery,Events,Dialog,Overlay,Modal Dialog,我需要能够在页面的URL中传递模式的ID时在页面上打开ID为jQuery的UI模式。例如: http://mysite.com/visit.html#directions #directions是一个ID为的DIV,位于页面的最底部,就在结束BODY元素之前。它在页面加载时被实例化为一个jQuery UI对话框,然后我运行一个函数来检查当前URL中模式的ID。如果URL包含模式的ID,则打开模式 以下是我的自动打开功能的外观: function autoOpenModal() { if

我需要能够在页面的URL中传递模式的ID时在页面上打开ID为jQuery的UI模式。例如:

http://mysite.com/visit.html#directions
#directions是一个ID为的DIV,位于页面的最底部,就在结束BODY元素之前。它在页面加载时被实例化为一个jQuery UI对话框,然后我运行一个函数来检查当前URL中模式的ID。如果URL包含模式的ID,则打开模式

以下是我的自动打开功能的外观:

function autoOpenModal() {
    if ( document.location.href.indexOf('#') ) {
        var uriParts = document.location.href.split('#');
        var hashID = '#' + uriParts[1];
        if ( $(hashID) && $(hashID).hasClass('dialog')) {
            $(hashID).dialog('open');
        }
    }
}
我遇到的问题是,在打开模式之前,浏览器会自动向下滚动到页面最底部的ID。因此,当用户关闭模式时,他们位于页面底部(在我看来,这似乎“坏了”)


谁能告诉我如何阻止浏览器自动向下滚动到ID?我已经看过
event.preventDefault()
,但没有成功;我不确定在事件链中的何处或如何使用它。

请尝试从
autoOpenModal()函数中返回false:

function autoOpenModal() {
    if ( document.location.href.indexOf('#') ) {
        var uriParts = document.location.href.split('#');
        var hashID = '#' + uriParts[1];
        if ( $(hashID) && $(hashID).hasClass('dialog')) {
            $(hashID).dialog('open');
        }
    }
    return false;
}
如果这是您的URL“http://mysite.com/visit.html#directionsweb浏览器应始终跳转到“方向”,因为这是对它的要求。您可以使用查询字符串,而不是使用“#”


谢谢你的建议,卡里姆。但我已经试过了,但似乎不起作用。我认为这是因为浏览器在执行document.ready()事件之前“跳过”了标记。