我目前使用jTemplates在客戶端上創建一個相當大的表,每一行都有一個按鈕,將打開一個jQuery UI對話框。但是,當我向下滾動頁面並單擊其中一個按鈕時,jQuery對話框將打開,但滾動位置丟失,頁面跳回到頂部(阻止和實際對話框顯示屏幕)。有沒有人看到或知道什麼可能會導致這個問題?如何在彈出jQuery UI對話框時防止滾動到頁面頂部?
謝謝。
我目前使用jTemplates在客戶端上創建一個相當大的表,每一行都有一個按鈕,將打開一個jQuery UI對話框。但是,當我向下滾動頁面並單擊其中一個按鈕時,jQuery對話框將打開,但滾動位置丟失,頁面跳回到頂部(阻止和實際對話框顯示屏幕)。有沒有人看到或知道什麼可能會導致這個問題?如何在彈出jQuery UI對話框時防止滾動到頁面頂部?
謝謝。
您是否使用錨標籤來實現彈出對話框的「按鈕」?如果是這樣,您需要打開對話框的點擊處理程序返回false,以便不調用錨點標記的默認操作。如果您使用的是按鈕,您還需要確保它不會提交(通過從處理程序返回false)並完全刷新頁面。
例如,
$('a.closeButton').click(function() {
$('#dialog').dialog('open');
return false;
});
<a class='closeButton'>Close</a>
我有同樣的問題,當使用angularjs和浪費了一些小時發現使用[ng-click](http://docs.angularjs.org/api/ng.directive:ngClick)時應避免使用href屬性。 – Ritesh 2013-09-19 21:36:53
@Ritesh反正這裏真的不需要它。我已經刪除。 – tvanfosson 2013-09-20 13:22:43
好的。如果你刪除了href屬性,那麼鼠標光標不會顯示出來,你可能需要做一些樣式。在angularjs的情況下,它不會自動處理它。 – Ritesh 2013-09-20 22:02:13
改變你這樣的代碼
$('a.closeButton').click(function(e) {
e.preventDefault();
$('#dialog').dialog('open');
});
你可以試試:
scrollTo(0, jQuery("body"));
如果你的按鈕與HTML錨標記工作與href="#"
更換href例如通過href="javascript:;"
或任何其他用於禁用的方法HREF。滾動發生的原因是因爲href="#"
滾動到頁面的頂部。
看到此之前,但後來我用下面的插件,以確保滾動位置不丟失http://plugins.jquery.com/project/ScrollTo – 2009-07-20 21:08:33