Как предотвратить прокрутку вверх страницы при появлении диалогового окна jQuery UI? - PullRequest
29 голосов
/ 21 июля 2009

В настоящее время я использую jTemplates для создания довольно большой таблицы на клиенте, в каждой строке есть кнопка, которая открывает диалоговое окно jQuery UI. Однако, когда я прокручиваю страницу вниз и нажимаю на одну из этих кнопок, открывается диалоговое окно jQuery, но позиция прокрутки теряется, и страница возвращается наверх (блокировка и фактическое диалоговое окно отображаются на экране). Кто-нибудь видел или знает, что может вызвать эту проблему?

Спасибо.

Ответы [ 4 ]

69 голосов
/ 21 июля 2009

Используете ли вы тег привязки для реализации "кнопки", которая появляется в диалоговом окне? Если это так, вы захотите, чтобы обработчик щелчков, открывающий диалоговое окно, возвращал false, чтобы действие по умолчанию для тега привязки не вызывалось. Если вы используете кнопку, вам также нужно убедиться, что она не отправляется (возвращая false из обработчика), и полностью обновить страницу.

Например,

$('a.closeButton').click( function() {
     $('#dialog').dialog('open');
     return false;
});


<a class='closeButton'>Close</a>
12 голосов
/ 27 апреля 2013

Если ваши кнопки работают с тегом привязки html с href="#", замените href, например, на href="javascript:;" или любым другим методом, который вы используете для отключения href. Причина, по которой происходит прокрутка, заключается в том, что href="#" прокручивает вверх страницы.

6 голосов
/ 10 августа 2009

измени свой код следующим образом

$('a.closeButton').click( function(e) {
    e.preventDefault();
     $('#dialog').dialog('open');
});
0 голосов
/ 14 сентября 2011

Вы можете попробовать:

scrollTo(0, jQuery("body"));
...