0

私は次のツリーを持っています-http ://jsfiddle.net/anirbankundu/wzEBW/

このツリーには、n個のノードを含めることができます。ユーザーが単一のノードにカーソルを合わせると、ノードの背景色を変更する必要があります。基本的に、ホバークラスをliに追加する必要があります。どの時点でも、1つのノードのみを強調表示できます。私が適用しているスタイルは、基本的にliの後続の子を追加することです。(フィドルリンクを参照)

何か助けはありますか?

4

4 に答える 4

1

子ノードの強調表示を「元に戻す」ことができます。

li:hover {
   background: red;
}

li:hover li {
   background: white;
}
于 2012-05-08T03:13:55.797 に答える
0

「div」の周りに「a」要素をラップしました。

<script id="itemTmpl" type="text/html">
    <li>
        <div>
            <a href="#" data-bind="click: $root.toggleChildren, text: showChildren() ? ' - ' : ' + '"></a>
            <a href="#" data-bind="text: name"></a> 
        </div>
        <ul data-bind="visible: showChildren, template: { name: 'itemTmpl', foreach: children }"></ul>
    </li>
 </script>

そして、cssに少し変更を加えます。

li ul li div:hover {
    background-color: #C0DDF0;
}​

動作しているようですhttp://jsfiddle.net/twTcw/

それが役に立てば幸い!

于 2012-05-08T03:20:01.380 に答える
0

動作しているように見えますが、これは少し単純で、将来レベルを追加するとランダム性が低下する可能性があります。

li ul li:hover { background-color: #C0DDF0; }

于 2012-05-08T03:28:55.757 に答える
0

CSSでの使用

ul li ul li.hover {
    background-color: #C0DDF0;
}

それ以外の

ul li ul li:hover {
    background-color: #C0DDF0;
}

そしてJavaScript(jQuery)で次のように記述します。

$("ul li ul li","#pnlDestinations").live("mouseenter", function() {
    $(this).addClass("hover").siblings("li").removeClass("hover");
}).live("mouseleave", function() {
    $(this).removeClass("hover");
});

これにより、スクリプトのブラウザー間の互換性が実現されます。こちらの更新されたスクリプトをご覧ください。サンプルスクリプトにはサブリストが含まれていないため、現在は機能しません。ただし、デモンストレーション用の動作バージョンを確認したい場合は、hearから見つけてください。

于 2012-05-08T03:31:30.527 に答える