2013-02-20 82 views
0

我正在使用帶有jQuery UI的選項卡式界面。這工作正常。每個選項卡實際上是一個表單。所以當這個表單被提交時,這個動作會把用戶帶回到同一個頁面。但在那一點上,我想打開適當的標籤。帶有標籤的jQuery UI對話框

所以,我正在使用一個類似於這樣的URL。

domain.com/page.php#tab1

的正常工作,並打開正確的選項卡。頁面的滾動位置有一個小問題。這是由於頁面上的錨點位置。我希望滾動位於頁面的頂部,所以我正在使用類似的方式返回頂部。

$('html, body').animate({ scrollTop: 0 }); 

所以,一切都很好。然而,我然後打開一個模式對話框,並且由於發生的滾動而定位不正確。

我已經做了研究,發現這個建議重新定位的模式:

$('my-selector').dialog('option', 'position', 'center'); 

,但似乎並沒有工作。

那麼,我該如何獲得這個發揮不錯?

我的簡化代碼如下:

HTML

<div id="tester"> 
</div> 

腳本 - 在文件準備

$('html, body').animate({ scrollTop: 0 });# 

jQuery('#tester').dialog 
({ 
title: "Attribute " , 
minWidth: 840, 
height:500 
}); 

其實在現實版的對話框中顯示有一個單擊處理。所以,當對話框打開時,動畫就完成了。所以我很困惑爲什麼模態出現在頁面的底部。

在此先感謝

回答

0

如果您確保對話框中打開了.animate()方法的完整的回調,你不應該有任何問題。

可能發生的情況是在打開對話框時動畫仍處於轉換狀態,因此其位置的內部計算不正確。下面是一個基本的例子:

$('#button').click(function() { 
    $('html, body').animate({ 
     scrollTop: 0 
    }, openDialog); 
}); 

function openDialog() { 
    jQuery('#tester').dialog({ 
     title: "Attribute ", 
     minWidth: 840, 
     height: 500 
    }); 
} 

jsfiddle

+0

@魯本的感謝。好吧,那就是我認爲的問題。但事實上並非如此。正如我所說的,即使通過點擊事件打開對話框(動畫發生很長時間後),效果仍然是一樣的。該對話框在屏幕底部打開。 – niccol 2013-02-21 10:05:37

+0

@niccol我認爲你最好的選擇是發佈你的實際代碼或使用jsfiddle構建問題的一個例子。否則,很難找出錯誤。 – 2013-02-21 10:28:45