2017-09-25 2 views
0

dies meine erste Frage auf dem Stapel ist, ich habe diese html/jQuery:Warum Doppelklick auf die gleiche Seite Anfrage Doppelklick?

$("#mdrop1").toggle(function() { 
 

 
    $("#mt1").slideDown(); 
 
    $("#mt2").slideUp(); 
 

 
}, function() { 
 
    $("#mt1").slideUp() 
 

 
}); 
 

 
$("#mdrop2").toggle(function() { 
 

 
    $("#mt2").slideDown(); 
 
    $("#mt1").slideUp(); 
 
}, function() { 
 
    $("#mt2").slideUp() 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#" id="mdrop2">dropdown 2</a> 
 
<div class="dropdown-laterale" id="mt2"> 
 
    <a href="menu1.html">menu 1</a> 
 
    <a href="menu2.html">menu 2</a> 
 
    <a href="menu3.html">menu 3</a> 
 
</div> 
 
<hr> 
 
<a href="#" id="mdrop1">dropdown 1</a> 
 
<div class="dropdown-laterale" id="mt1"> 
 
    <a href="othermenu1.html">other menu 1</a> 
 
    <a href="othermenu2.html">other menu 2</a> 
 
    <a href="othermenu3.html">other menu 3</a> 
 
</div> 
 
<hr>

Das erste Mal, dass ich #mdrop1 mit #mt2 klicken geöffnet, $mt2 slideup korrekt und das gleiche Verhalten ist, wenn Ich klicke #mdrop2 mit #mt1 bereits geöffnet ABER ... wenn ich meine Aktion auf diese 2 toggles wiederholen möchte, arbeiten sie nur mit Doppelklick ... warum ?? Ich hoffe, meine Erklärung ist klar :)

+0

habe ich versucht, den Code und es schaltet nur mdrop Elemente, wie es soll. Wo ist dein Onclick-Event? Was erwartest du zu passieren? –

Antwort

0

Ihre Erklärung ist eigentlich nicht sehr klar, wenn Sie die Menüs auf klicken möchten, ich denke, Sie sollten stattdessen $('#mt1').click(function(){....}) verwenden. Mehr über auf Klick-Aktionen hier https://api.jquery.com/click/

Außerdem Code für Umschaltung ist nicht korrekt, können Sie nicht zwei Callback-Funktionen, um es passieren kann, jquery nicht akzeptiert, dass, siehe http://api.jquery.com/toggle/

+0

Sorry für meine schlechte Erklärung, die Sache, die ich tun möchte, ist, dass, wenn ich ein Menü öffnen andere Menü, wenn bereits geöffnet, schließen – user3752854

+0

wie oben erklärt, müssen Sie jquery 'click', nicht' toggle' verwenden –

0

ich beschlossen mein Problem mit dieser Lösung:

$('#mdrop1').click(function(){ 
 
\t \t \t 
 
\t \t \t if ($('#mt1').css('display') == 'none'){ 
 
    \t \t \t $("#mt1").slideDown(); 
 
\t \t \t \t 
 
\t \t \t \t \t if ($('#mt2').css('display') == 'block') 
 
\t \t \t \t \t { 
 
\t \t \t \t \t \t $("#mt2").slideUp(); 
 
\t \t \t \t \t } 
 
\t \t \t } 
 
\t \t \t else 
 
\t \t \t { 
 
\t \t \t \t $("#mt1").slideUp(); 
 
\t \t \t } 
 
\t \t 
 
\t \t }); 
 
\t \t 
 
\t \t $('#mdrop2').click(function(){ 
 
\t \t \t 
 
\t \t \t if ($('#mt2').css('display') == 'none'){ 
 
    \t \t \t $("#mt2").slideDown(); 
 
\t \t \t \t 
 
\t \t \t \t \t if ($('#mt1').css('display') == 'block') 
 
\t \t \t \t \t { 
 
\t \t \t \t \t \t $("#mt1").slideUp(); 
 
\t \t \t \t \t } 
 
\t \t \t } 
 
\t \t \t else 
 
\t \t \t { 
 
\t \t \t \t $("#mt2").slideUp(); 
 
\t \t \t } 
 
\t \t 
 
\t \t });