Окно, прокручивающее, когда диалоговое окно jQuery открывается

Я пытаюсь открыть модальное диалоговое окно jQuery использование jquery 1.4 и jquery-ui-1.8rc3.custom.js

Диалоговое окно открывается без проблем во всех браузерах, но в IE 7 и 6, после того, как открывается диалоговое окно, окно прокручивает себя к кнопке... Я пытался прокрутить окно назад к модальной позиции, но очень непоследователен. использовал следующую строку кода после открытия модального

window.scrollTo($('#selector').dialog('option', 'position')[0],$('#selector').dialog('option', 'position')[1]);

Одна странная вещь, которую я замечаю, состоит в том, что после того, как я открываю модальное, страница становится огромной..., как будто некоторые дополнительные вещи складывают в нижней части...., и она в конечном счете прокручивает к нижней части. Любая идея, почему это могло быть hapenning

в HTML

<div id="selector">
</div>

в document.ready

$('#selector').dialog({
  bgiframe: true,
  autoOpen: false,
  width: 100,
  height: 100,
  modal: true,
  position: 'top'
});

в js

$('#selector').dialog('open');
20
задан Dan Atkinson 21 August 2012 в 10:53
поделиться

4 ответа

Похоже, вам не хватает # в вашем селекторе:

window.scrollTo($('#selector').dialog('option', 'position')[0], $('#selector').dialog('option', 'position')[1]);

, возможно, поэтому окно прокручивается в левый верхний угол.


Изменить: я просто смотрел документацию и .dialog ('option', 'position') значение по умолчанию center .

position Тип: String, Array По умолчанию: 'center'

Определяет, где должно отображаться диалоговое окно . Возможные значения: 1) одиночная строка , представляющая позицию в области просмотра: 'center', 'left', 'right', 'top', 'bottom'. 2) массив , содержащий пару координат x, y в пиксельном смещении от левого верхнего угла области просмотра (например, [350,100]) 3) массив {{1} } содержащие строковые значения позиции x, y (например, ['right', 'top'] для верхнего правого угла).

Таким образом, вы можете получить текст или числа, возвращаемые с помощью параметра позиции, а window.scrollTo () требует чисел. Так что попробуйте вместо этого:

var d = $(".ui-dialog").position();
window.scrollTo( d.left , d.top);
3
ответ дан 29 November 2019 в 23:06
поделиться

У меня была аналогичная ситуация, когда диалоговое окно открывалось там, где должно было быть на странице, но пользователь был перенаправлен в конец страницы. По сути, я забыл включить соответствующий CSS, соответствующий библиотеке JavaScript jQuery UI. Сделав это, все было в порядке. Я предполагаю, что это что-то вроде этого, где есть стили, установленные для элементов в jQuery css, которые не установлены в вашем собственном CSS.

Чтобы отладить проблему и не включать весь css пользовательского интерфейса jQuery, я сделал две идентичные страницы, одну с использованием css пользовательского интерфейса jQuery, а другую - нет, и просто проверил, что изменилось в css, через Firebug в Firefox и добавил эти стили в мой css.

Надеюсь, это поможет. Mag

1
ответ дан 29 November 2019 в 23:06
поделиться

Я тоже боролся с этой проблемой. Я не использовал никаких тем, поэтому у меня не было этого важного свойства CSS:

position:absolute;

Я добавил это в свой файл CSS, и теперь все работает нормально:

.ui-widget { position: absolute; }
6
ответ дан 29 November 2019 в 23:06
поделиться

Если вы используете тег привязки, как показано ниже, для запуска диалогового окна

<a href="#" onclick="$(#id).dialog('open');">open dialog</a>

, вам нужно добавить return false; в атрибут onclick :

<a href="#" onclick="$(#id).dialog('open'); return false;">open dialog</a>

Это предотвращает перезагрузку страницы для привязки # , которая заставляет ее перескакивать наверх.

38
ответ дан 29 November 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: