0

asp.net メニュー コントロールを使用して作成されたメニューがあります。表示をポップ表示から展開アコーディオン スタイルに変更する JQuery スクリプトを追加しました。ただし、ポップ表示は引き続き発生するため、全体的に発生するのは、「メニューの上にマウスを置く -> サブメニューが表示される -> サブメニューがロールバックする」です。

私が探しているのは、asp.net が生成する javascript を無効にして、マウスオーバー時にサブメニューを表示する方法です。これにより、私が持っている置換スクリプトがスタンドアロンで機能できるようになります。

この質問に似た他の回答で、次のことがわかりました。

public class MyCustomMenu : System.Web.UI.WebControls.Menu
{
    protected override void OnPreRender(EventArgs e)
    {
        // Don't call base OnPreRender
        //base.OnPreRender(e);
    }
}

ただし、それを masterpage.cs ファイルに追加しても問題は解決しませんでした。

4

2 に答える 2

1

メニューコントロールによってレンダリングされたHTMLを見ると、すべてのメニュー要素にMenu_HoverStaticと呼ばれるマウスオーバーの関数呼び出しがあることがわかります。これを無効にするには、ASPXマークアップに同じ名前の空の関数を含めます。

<script type="text/javascript">
   Menu_HoverStatic = function () { };
</script>

これにより、元のマウスオーバーが効果的に無効になります。このメソッドを使用すると、必要に応じて他の元のイベントハンドラーを無効にできます。

于 2012-06-20T20:27:51.920 に答える
0

誰もがよく知っているわけではありませんが、コントロール アダプターを使用して標準コントロールのレンダリング方法をカスタマイズすることです。

アダプターを使用すると、たとえば、メニューの出力をクリーン<ul><li>要素に変更したり、jquery と統合したりできます。

メニューでASP.NET 2.0 CSS Friendly Control Adaptersを使用する例を次に示します: http://www.asp.net/cssadapters/WalkThru/WalkThrough.aspx#SimpleMenu

于 2012-06-20T20:43:59.733 に答える