2011-07-06 10 views
0

私は、マスターページの先頭に次のjQueryを持つASP.NETカスタムサーバーコントロールメニューを持っています。問題は、通常のフォーム上にボタンがあると、マスターページのサイドメニューのスライドアクションがフォーム内でクリックされるたびにアクティブになるということです。どうすればスライドアクションのみ最初のページの読み込み時や別の男性アイテムがクリックされたときに発生しますか?マスターページのjQueryスライドメニュー

$(document).ready(function() { 
    // Expand/Collapse All 
    $('#example1 .expand_all').click(function() { 
     $('#menu1 > li > a.collapsed').addClass('expanded').removeClass('collapsed').parent().find('> ul').slideDown('medium'); 
    }); 
    $('#example1 .collapse_all').click(function() { 
     $('#menu1 > li > a.expanded').addClass('collapsed').removeClass('expanded').parent().find('> ul').slideUp('medium'); 
    }); 
    // Slide 
    $("#menu1 > li > a.expanded + ul").slideToggle("medium"); 
    $("#menu1 > li > a").click(function() { 
     $(this).toggleClass("expanded").toggleClass("collapsed").parent().find('> ul').slideToggle("medium"); 
    }); 
}); 

答えて

2

.one()を試しましたか?多分これは役立ちます:.one()

編集: 私は、これがこの問題を解決するための最良の方法であるかどうかわからないんだけど:

<asp:HiddenField ID="isloaded" runat="server" Value="false" EnableViewState="true" /> 

$(document).ready(function() { 
    var isLoaded = document.getElementById("isloaded").value; 
    if (isLoaded == "false") { 
     //your code 
     document.getElementById("isloaded").value = "true"; 
    } 
}); 
+0

すべてで働いてからスライドすることを防ぐSlideToggle方法にそれを追加します。$( '#menu1> li> a.expanded + ul').l.slideToggle( 'medium'); – IrishChieftain

+0

私はこれを次のように使用することを意味していました:$(document).ready(function(){/ * do something * /})one() これが機能しない場合、隠しフィールドを使用して状態(isLoadedのようなものです)。メニューが既にロードされている場合は、アニメーションを行わないでください。 –

+0

さて、私は試してみましたが、単純なフォームボタンをクリックしてもメニュースライダーはまだアクティブになっています... – IrishChieftain