我有一個網頁,最終是一堆jquery-ui對話框,所有30%的屏幕寬度,三列,每列包含儀表板信息不同的種類。需要解決.position()錯誤jquery-ui/webkit
我將數據加載到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');
}
...這是必要的,因爲我需要能夠抓住整個對話框(我不明白爲什麼有沒有一種機制來輕鬆地分配ID到對話框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的瀏覽器的問題嗎?
你確定對話框是正確的解決方案? –
說實話,不,我不認爲它是,但我也不認爲這是我的問題在這種情況下。 –
它有點兒。你試圖將絕對定位的'div'(它將被附加在'body'的底部)超過一些其他元素。這甚至聽起來錯了,並且產生了我期望的那種問題。嘗試使用摺疊/關閉按鈕創建窗口小部件,然後對話框確實不是正確的路徑,你可能需要一些'可拖動的',但物理上位於列的內部 –