2009-07-20 120 views
27

我目前使用jTemplates在客戶端上創建一個相當大的表,每一行都有一個按鈕,將打開一個jQuery UI對話框。但是,當我向下滾動頁面並單擊其中一個按鈕時,jQuery對話框將打開,但滾動位置丟失,頁面跳回到頂部(阻止和實際對話框顯示屏幕)。有沒有人看到或知道什麼可能會導致這個問題?如何在彈出jQuery UI對話框時防止滾動到頁面頂部?

謝謝。

+0

看到此之前,但後來我用下面的插件,以確保滾動位置不丟失http://plugins.jquery.com/project/ScrollTo – 2009-07-20 21:08:33

回答

66

您是否使用錨標籤來實現彈出對話框的「按鈕」?如果是這樣,您需要打開對話框的點擊處理程序返回false,以便不調用錨點標記的默認操作。如果您使用的是按鈕,您還需要確保它不會提交(通過從處理程序返回false)並完全刷新頁面。

例如,

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


<a class='closeButton'>Close</a> 
+1

我有同樣的問題,當使用angularjs和浪費了一些小時發現使用[ng-click](http://docs.angularjs.org/api/ng.directive:ngClick)時應避免使用href屬性。 – Ritesh 2013-09-19 21:36:53

+0

@Ritesh反正這裏真的不需要它。我已經刪除。 – tvanfosson 2013-09-20 13:22:43

+0

好的。如果你刪除了href屬性,那麼鼠標光標不會顯示出來,你可能需要做一些樣式。在angularjs的情況下,它不會自動處理它。 – Ritesh 2013-09-20 22:02:13

5

改變你這樣的代碼

$('a.closeButton').click(function(e) { 
    e.preventDefault(); 
    $('#dialog').dialog('open'); 
}); 
-2

你可以試試:

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

如果你的按鈕與HTML錨標記工作與href="#"更換href例如通過href="javascript:;"或任何其他用於禁用的方法HREF。滾動發生的原因是因爲href="#"滾動到頁面的頂部。

相關問題