0

これに関連して他にもいくつかの質問があることは知っていますが(少し前に私からのものを含む)、私が見つけた唯一の解決策を改善する方法を探しています。

マウスホイールを使用して高さを制限してスクロールできるようにしようとしてoverflow: scroll; <div><div>ます<div>.

私のWeb旅行で、私はこのフィドルに出くわしました: http://jsfiddle.net/mrtsherman/eXQf3/33/。残念ながら、データが AJAX 呼び出しから呼び出されたときにこれを機能させることはできません。なぜこれが起こっているのかわかりません。誰かがこの問題を認識している場合は、アドバイスをいただければ幸いです。

ただし、私の質問は、少なくとも機能することがわかった唯一の解決策、つまり onmouseover クラスの追加に関連しているため、少し話題から外れました。

DIV

<div onmouseover="$('html').addClass('noscroll');" 
     onmouseout="$('html').removeClass('noscroll');" 
     style="overflow:auto;max-height: 200px;">Data that is long</div>

CSS クラス

html.noscroll
{
    position: fixed; 
    overflow-y: scroll;
    width: 100%;
}

私はこのコードを使用して問題なく動作したと思っていましたが、小さなモニターでは、画面の上部にジャンプして戻るという、はるかに厄介な問題が発生することがわかりました。

がトリガーされるとposition: fixed;、スクロールバーが無効になり、表示されたままになります(これが必要です)が、スクロールバーが再び一番上まで移動し、スクロール可能なdivがページの半分下にあるため、不可能になります使用する。

4

1 に答える 1

1

この部分について:

残念ながら、データが AJAX 呼び出しから呼び出されたときにこれを機能させることはできません。なぜこれが起こっているのかわかりません。誰かがこの問題を認識している場合は、アドバイスをいただければ幸いです。

少しコードを変更する必要があります。

$('#abs').on('mousewheel', function(e) {

変更後

bind既存の要素に対してのみ機能し、ajax を介して取得する要素にアタッチすることはできません。jQuery サイトから:

jQuery 1.7 の時点で、.on() メソッドは、イベント ハンドラーをドキュメントにアタッチするための推奨メソッドです。以前のバージョンでは、.bind() メソッドを使用して、イベント ハンドラーを要素に直接アタッチしていました。ハンドラーは、jQuery オブジェクトで現在選択されている要素にアタッチされるため、.bind() への呼び出しが発生した時点でそれらの要素が存在している必要があります。より柔軟なイベント バインディングについては、.on() または .delegate() でのイベント委任の説明を参照してください。

.on() メソッドの詳細を読む


コードをこれに変更してみてください。変更後にフィードバックをお寄せください。

于 2013-05-21T18:44:55.100 に答える