Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Podwójne zdarzenie
Forum PHP.pl > Forum > Przedszkole
.rmvb's
Witam.
Zastanawiam się, w jaki sposób mogę przypisać jakby dwie rzeczy do jednego elementu.
Pokażę kod i wytłumaczę co chcę osiągnąć
  1. $(document).ready(function(){
  2. $("#menu-open").addClass("on");
  3. var szerokosc = $(window).width();
  4. $(".on").click(
  5. function()
  6. {
  7. $(".grey-panel").animate({width:"+="+szerokosc+"px"},1000);
  8. $('nav ul').delay( 200 ).animate({top:"+=40px" },1000);
  9. $("#menu-open").addClass("off").removeClass("on");
  10. });
  11.  
  12. $(".off").click(
  13. function()
  14. {
  15. $('nav ul').animate({top:"-=40px" },1000);
  16. $(".grey-panel").delay( 200 ).animate({width:"-="+szerokosc+"px"},1000);
  17.  
  18. $("#menu-open").removeClass("off");
  19. $("#menu-open").addClass("on");
  20.  
  21. });
  22. });


Chciałbym aby za pośrednictwem jednego przycisku otwierać i zamykać menu.
  1. <a id="menu-open" class=""></a>
  2. <div class="grey-panel">
  3. <ul>
  4. <li>jeden</li>
  5. <li>dwa</li>
  6. <li>trzy</li>
  7. <li>cztery</li>
  8. </ul>
  9. </div>

Po każdej akcji kliknięcia chciałem zmieniać klasę, aby kolejne kliknięcie otwierało inne zdarzenie. W efekcie tego co mam aktualnie, otwiera się jedynie zdarzenie od klasy on..
W jaki sposób mógłbym rozwiązać mój problem ?
skowron-line
[JAVASCRIPT] pobierz, plaintext
  1. var isopen = false;
  2.  
  3. $('element').on('click', function(){
  4. if(isopen == false) {
  5. isopen = true;
  6. //otwieram
  7. }
  8. else
  9. {
  10. isopen = false;
  11. //zamykam
  12. }
  13. });
[JAVASCRIPT] pobierz, plaintext

jeżeli dobrze zrozumiałem.
.rmvb's
Tak, właśnie o takie rozwiązanie mi chodziło, dzięki.

Tak pozatym, jest jakieś wytłumaczenie, dlaczego nie działało mi to na moich klasach, gdy próbowałem je dodawać i usuwać; po tym rozpoznawać?
buliq
bo to nie było live()
styryl
Cytat(buliq @ 6.09.2013, 11:00:30 ) *
bo to nie było live()


Zobacz dokumentacje: "As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live()."
buliq
@styryl i co? Napisano ze zmienione? Więc gdzie problem?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.