1

我正在处理某人的代码,他们对所有弹出窗口都使用了 jquery UI Dialog。问题是页面一直滚动到顶部,而对话框则留在任何打开的位置。这是代码:

$('body').on('click', 'a[href$="#dialog"]', function(e) {
    e.preventDefault();
    $('#contact-popup').dialog({
        title: 'Contact',
        modal: true,
        width: 328,
        show: {effect: 'fade', duration: 400},
        hide: {effect: 'fade', duration: 400},
        resizable: false,
        draggable: false,
        open: function() {
            $('#contact-popup form').show();
            $('#thanks').hide();
        }
    })
    return false;
});

我试过e.preventDefault(), return false,但它仍然滚动到页面顶部。

我正在从锚点调用对话框:<a href="#dialog">Click Here</a>

我是否需要更改调用对话框的方式?还是我在这里做错了什么?

这是链接,因此您可以对其进行测试:test.persogenics.com/hire/interview-guide/

刚刚尝试将对话框“打开”放入常规 js 函数中 - 不起作用 - 仍然滚动到顶部:

js:
function popup() {
    $('#contact-popup').dialog()
    return false;
};

html:
<button onClick="popup();">Click Me</button>

这意味着这不是锚定问题,.. 对吗?

4

2 回答 2

1

发现问题!事实证明,这个问题是我创建的一个绝对定位输入来“欺骗”对话框 UI 使其不自动关注任何实际输入。

<div id="contact-popup" style="display:none">

--> <input type='text' style='position:absolute; top:-9999px;' />

    <form method="post" action="../../email.php">
        <h5>Leave us your contact info and we'll get in touch.</h5>
        <div data-role="fieldcontain">
            <input type="text" name="first-name" value="" class="required">

我猜这会使页面视图跳出,因为它将它推到顶部。

现在我知道你不仅要小心你如何编写 jQuery,还要小心你放入对话框弹出窗口中的内容!

感谢大家对此的帮助!

于 2013-02-28T14:07:06.820 回答
0

问题可能是您正在使用指向页面内锚点的锚点 URL,通常的做法是将“javascript:void(0)”作为 href 传递,在您的情况下,您通过它的 href 检测特定的锚点,因此要解决您可以将一个类传递给指向对话框并从中选择的锚标记。也许是这样的

<a class="dialog_link" href="javascript:void(0)" >

和 jQuery

$('body').on('click', ',dialog_link', function(e) {
e.preventDefault();
$('#contact-popup').dialog({
    title: 'Contact',
    modal: true,
    width: 328,
    show: {effect: 'fade', duration: 400},
    hide: {effect: 'fade', duration: 400},
    resizable: false,
    draggable: false,
    open: function() {
        $('#contact-popup form').show();
        $('#thanks').hide();
    }
})
return false;

});

于 2013-02-27T22:52:09.207 回答