2009-07-20 6 views
27

私は現在、jTemplatesを使ってクライアント上にかなり大きなテーブルを作成していますが、各行にはjQuery UIダイアログを開くボタンがあります。しかし、ページを下にスクロールしてそのボタンの1つをクリックすると、jQueryダイアログが開きますが、スクロール位置が失われ、ページが上にジャンプします(ブロッキングと実際のダイアログで画面外が見えます)。誰かがこの問題の原因を知りましたか知っていますか?jQuery UIダイアログをポップアップするときにページ上部へのスクロールを防止するにはどうすればよいですか?

ありがとうございました。

+0

スクロール位置が失われないようにするために、次のプラグインを使用しました。http://plugins.jquery.com/project/ScrollTo –

答えて

66

ダイアログをポップする「ボタン」を実装するためにアンカータグを使用していますか?その場合、アンカータグのデフォルトのアクションが呼び出されないように、ダイアログを開くclickハンドラがfalseを返すようにします。ボタンを使用している場合は、(ハンドラーからfalseを返して)サブミットしないようにし、ページを完全に更新する必要もあります。例えば

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


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

angularjsを使用していて、いくつかの使用後に同じ問題が発生しましたhref属性は[ng-click](http://docs.angularjs.org/api/ng.directive:ngClick)を使用するときは避けるべきであることがわかりました。 – Ritesh

+0

@Riteshとにかくここには本当に必要はありません。私は削除しました。 – tvanfosson

+0

href属性を削除すると、マウスカーソルが表示されず、スタイリングが必要になることがあります。 anglejsの場合は問題ありませんが、自動的に処理します。 – Ritesh

5

変更この

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

私はそれらを使ってajax経由でコンテンツを読み込み、同じ問題を抱えていました。私はページをスクロールしてダイアログを開いた後、ページを閉じてページを先頭に戻しました。 scrollToプラグインが必要以上に関与していたため、上記は完全に機能しました。 –

+0

Spot on!それはリンクとしてデフォルトしていた! –

-2

のようなあなたのコードは、あなたが試すことができます:

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

をあなたのボタンが置き換えhref="#"とHTMLアンカータグで作業する場合たとえば、href="javascript:;"などのhrefや、 href。スクロールが発生する理由は、href="#"がページ上部にスクロールするためです。

+0

これは私の問題でした。私は実際に 'href'を削除しました。ありがとう! –

関連する問題