2010-11-30 8 views
0

Ich habe diese kleine JavaScript jQuery verwenden, die ein ul nach unten gleitet, wenn ein Bild geklickt wird:Kleine JavaScript/jQuery mouseleave Frage

$(document).ready(function() { 
$('img.menu_class').click(function() { 
$('ul.the_menu').slideToggle('medium'); 
}); 

}); 

ich mich gefragt, ob ich es ändern könnte zu erkennen, wenn die Maus den ul verlässt/image und lassen Sie es zurückgleiten, anstatt dass der Benutzer erneut auf das Bild klickt. Wenn ich etwas anderes als click() verwende, würde dies (natürlich) nur für das Bild gelten und die ul nicht als Objekt erkennen. Irgendwelche Vorschläge?

Antwort

0

Dies ist der gesamte Code (hinzugefügt einige Bild Swapping die ganze Sache), arbeitet in allen wichtigen (aktualisierten) Browsern im Moment. Nicht sehr sauber und wahrscheinlich könnte einfacher gemacht werden, aber es funktioniert:

$(document).ready(function() { 

$('ul.menu_body').hide(); 

if ($.browser.msie && $.browser.version < 8) { 

    $('.dropdown').click(function() { 
     if ($('ul.menu_body').is(':hidden')) { 

      $('ul.menu_body').fadeIn('medium'); 
      $('.menu_head').attr("src", "layout/buttonhover.png"); 
      $('.menu_body').css("font-weight","normal"); 


     } else if ($('ul.menu_body').is(':visible')) { 
      $('ul.menu_body').fadeOut('medium'); 
      $('.menu_head').attr("src", "layout/servbtn.png"); 
     } 
    }); 

} else { 

    $('.dropdown').click(function() { 
     if ($('ul.menu_body').is(':hidden')) { 
      $('ul.menu_body').fadeIn('medium'); 
      $('.menu_head').attr("src", "layout/buttonhover.png"); 

     } else if ($('ul.menu_body').is(':visible')) { 
      $('ul.menu_body').fadeOut('medium'); 
      $('.menu_head').attr("src", "layout/servbtn.png"); 
     } 
    }); 

    $('.dropdown').mouseleave(function() { 
     if ($('ul.menu_body').is(':visible')) { 
      $('ul.menu_body').fadeOut('medium'); 
      $('.menu_head').attr("src", "layout/servbtn.png"); 
     } 
    });  

    } 

}); 
0

Sie jquery mouseout()

+0

Ja, ich spielte damit herum. Aber ich kann leider nicht mit der Klick-Funktion arbeiten ... :( –

0

testen

$ ('img.menu_class') verwenden können. Binden ('mouseleave', function() { $ ('ul.the_menu'). slideToggle ('mittel'); });


oder

$ ('img.menu_class') bind ('Hover', function() { $ ('ul.the_menu') slideToggle ('mittel'). }.);


Verwenden Sie diesen Code.

Dies ist meine aktualisierte Code

verwenden Code ur Liste einmal Mausbewegung auf das Bild, um slidedown und bleibt offen

 
$(document).ready(function() { 

$('img.menu_class').bind('hover mouseleave',function() { 
$('ul.the_menu').slideDown('medium'); 
}); 

//to close ul 

$('#id_of_close_element').bind('click',function() { 
$('ul.the_menu').slideUp('medium'); 
}); 

}); 
+0

Beide funktionieren gut, das Problem ist, dass sie nur img.menu_class erkennen, was das ul zurückgleiten lässt, wenn Sie sich vom Bild entfernen. Das bricht die Verwendbarkeit ab, weil Sie nichts von der Liste auswählen können ... –

+0

Sie können mehrfache Selektoren verwenden, die Sie jeden Selektor mit einem Komma trennen – Breezer

+0

Ich hoffe, dass mein aktualisierter Code Ihnen hilft –