Нужен обходной путь для ошибки .position () в jquery-ui / webkit - PullRequest
1 голос
/ 05 декабря 2011

У меня есть веб-страница, которая, в конечном счете, представляет собой набор диалогов jquery-ui, все 30% ширины экрана, в трех столбцах, каждый из которых содержит информацию панели управления различного рода.

Я загружаю данные в div, и с помощью функции $ (document) .ready () я создаю диалоги и размещаю их друг над другом в различных столбцах, в зависимости от типа данных, отображаемых div. ,

Я использую вариант этого кода для каждого элемента div (я планирую сделать этот инструмент чище, когда я его исправлю, поэтому, пожалуйста, простите его избыточность). Сначала я создаю диалог, если он содержит данные:

//show recent posts if they exist below the account requests
if($('#recentPosts').html().length > 0){
    $('#recentPosts')
    .dialog({
        title: 'Recent Forum Messages',
        height: 320
    })
    .parent().addClass('cfdialog').attr('id', 'recentPostsDialog');
} else {
    $('#recentPosts').addClass('cfdialog').attr('id', 'recentPostsDialog');
}

... это необходимо, потому что мне нужно иметь возможность захватить все диалоговое окно (я не понимаю, почему не существует механизма для простого присвоения идентификатора диалоговому элементу div); после того, как все мои диалоги созданы, я делаю что-то вроде этого:

//now that the dialogs are set up, position them.
var leftContent = $('#columnTop');
var centerContent = $('#columnTop');
var rightContent = $('#columnTop');

$('.cfdialog')
.css('width', '30%')
.css('height', 'auto')
.css('max-height', '400');

...

$('#recentPostsDialog')
.position({
    my: 'center top',
    at: 'center bottom',
    of: centerContent,
    offset: '0 5'
});
if ($('#recentPostsDialog').html().length > 0){
    centerContent = $('#recentPostsDialog');
}

Это отобразит сообщения в диалоговом окне, как я хотел бы в FireFox и IE. Однако для Chrome диалоговые окна выскакивают примерно на 30 пикселей и мешают моим пунктам меню.

Я читал довольно много вещей на SO и форумах jquery, в которых говорится, что это связано с тем, как webkit рассчитывал смещения, и кто-то опубликовал исправление, но в этой ситуации это не работает.

Может кто-нибудь подсказать мне, как обойти проблему для браузеров на основе webkit?

1 Ответ

0 голосов
/ 08 декабря 2011

Казалось бы, нет простого ответа. Я закончил тестирование на jQuery.browser.safari и, если true, вручную сместил div. (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...