11

固定高さと垂直スクロールバーを備えたダイナツリーがあります。

node.activate(); 検索しているノードを選択しますが、垂直スクロールバーを動かさないため、アクティブなノードを表示するには手動でスクロールする必要があります。

プログラムでスクロールするにはどうすればよいですか?


mar10 のおかげで、この問題は解決しました。

var activeLi = node.li;
$('#tree').animate({
    scrollTop: $(activeLi).offset().top - $('#tree').offset().top + $('#tree').scrollTop()
}, 'slow');
4

3 に答える 3

8

Dynatree には組み込みの scrollTo 機能がありません。ただし、表示したい DOM 要素を取得したら、既存のメソッドとプラグインのいずれかを使用できるはずです。

あなたの場合、すでにオブジェクトを持っているように見えるので、またはを使用しnodeて関連付けられた<li>タグ<span>を取得できます。node.linode.span

一般に、呼び出すことでいつでもアクティブなノードを取得できます

var node = $("#tree").dynatree("getActiveNode");
// or
var node = $("#tree").dynatree("getTree").getActiveNode();

次に、関連する DOM 要素を取得します。

var activeLI = node && node.li;

またはアクティブ化イベントを処理します。

onActivate: function(node) {
    var activeLI = node.li;
    ...
}

要素を取得したら、標準的な方法を使用します。

jqueryを 使用して divにスクロールします。jQuery はelementに スクロールします。jQuery で要素にスクロールする方法は? 、...

編集 2014-05 Fancytree 2.0 以降、 autoScrollが標準オプションとして追加されました。

于 2012-01-22T21:29:35.350 に答える
5

同様の問題があり、上記の例で述べたように scrollTop を機能させることができませんでした。セレクターを「#tree」から「.dynatree-container」に変更して修正しました。

$('.dynatree-container').animate({ // ノードへのスクロールをアニメーション化する
  scrollTop: $(activeLi).offset().top - $('.dynatree-container').offset().top + $('.dynatree-container').scrollTop()
}、 'スロー');

これにより、数時間のフラストレーションが解消されます (:

ちなみに、dynatree バージョン 1.22 と jquery 1.8.3 と jquery ui 1.9.2 を使用しています。

于 2012-12-12T12:42:09.867 に答える