如何防止jquery.ui.dialog滚动到顶部窗口(当以编程方式调用时)

Jor*_*ter 5 jquery jquery-ui jquery-ui-dialog

我有以下代码:

    $(".foo-form").submit(function (event) {
        event.stopPropagation();
        event.preventDefault();
        $.ajax({
            url: this.action,
            data: $(this).serializeArray(),
            type: 'POST',
            dataType: 'json',
            success: function (data, msg, resp) {
                var $form = $("#second-form");
                $form.show().dialog({
                    resizable: false,
                    height:400,
                    width: 600,
                    modal: true,
                    title: "Recommendation added",
                    buttons: [
                        {
                            text: "OK",
                            click: doOK
                        },
                        {
                            text: "Cancel",
                            click: doCancel
                        }
                    ]
                });
            }
        })
        return false;
    });
Run Code Online (Sandbox Code Playgroud)

如果我在页面上向下滚动并提交表单,则在显示对话框时,它将页面滚动到顶部。有什么办法可以覆盖吗?

事情不是解决方案

  • 确定.ui-dialog班级的位置。它未经修改(使用Google的CDN)
  • 不能抵消事件-你可以看到,我打电话stopPropagationpreventDefault返回FALSE。因此,并不是该事件正在进行中(即使发生了,无论如何,它不是指向页面顶部的哈希链接)

使用jQuery 1.72和jQuery UI 1.8.21(各自的最新版本)。

小智 6

使用带有href标记的jQuery对话框时,我遇到了相同的问题,并添加了“ event.preventDefault();”来解决此问题当我打开对话框时,例如:

$(".button").click(function(event){
event.preventDefault();
$("#dialog").dialog();
});
Run Code Online (Sandbox Code Playgroud)


Kha*_*lid 3

我在使用带有 href 标签的 jQuery 对话框时遇到了类似的问题。我所要做的就是从 a 标签中删除 href="#" ,这解决了我的问题。

改成<a href='#'>SHOW</a><a>SHOW</a>