2016-05-19 5 views
0

Ich habe Prev/Next-Tasten. Mit dem Code, den ich bereitstellen werde, fügt er eine Klasse .fadeaway hinzu und entfernt sie.Probleme mit dem Drücken von Tasten drücken, um eine Aktion abzuschließen

$("a.next").click(function(){ 
     var elem=document.querySelector("#project-container"); 

     elem.classList.add("fadeaway"); 
     setTimeout(function(){ 
     goToNextProject(); 
     elem.classList.remove("fadeaway") 
     }, 350) 

     return false; 
    }); 

    $("a.prev").click(function(){ 
     var elem=document.querySelector("#project-container"); 

     elem.classList.add("fadeaway"); 
     setTimeout(function(){ 
     goToPrevProject(); 
     elem.classList.remove("fadeaway") 
     }, 350) 

     return false; 
    }); 

Nebenbei bemerkt, ich wette, es gibt eine Möglichkeit, diese beiden zu kombinieren. Das Problem liegt also beim Tastendruck. Ich habe derzeit js, um auch die vorherigen/nächsten Elemente mit den Pfeiltasten zu navigieren.

function activateKeyNav() 
    { 
     // Description: register keypress event on document object 
     jQuery(document).on('keydown', function(event) { 
      switch(event.which) 
      { 
       case 39: // right 
        goToNextProject(); 
        break; 

       case 37: // left 
        goToPrevProject(); 
        break; 
      } 
     }); 
    } 

Ich bin nicht sicher, wie die Animation zu erstellen, dass .fadeaway tut, dann ist es 0 so blendet es in und aus den #project-container. Ich brauche es wo, wenn die linken oder rechten Tasten gedrückt werden, es ist Hinzufügen und Entfernen der .fadeaway Klasse wie die a.next und a.prev tut.

Um ein funktionierendes Beispiel zu erhalten, klicken Sie auf die Schaltfläche prev/next here.

+1

können Sie Geige erstellen? –

+0

@DarrenBachan Die Kombination der beiden Event-Handler ist in Ordnung. Was ist die andere Sache, die Sie fragen? Eine Geige wäre hilfreich – Chintan

+0

@Chintan Ich bin mir nicht sicher, wie man eine Geige dafür baut. Der # Projektcontainer, auf den ich abzielte, lädt Daten aus einer Zeichenfolge. Mit den Schaltflächen Vor/Zurück wird der # Projekt-Container geöffnet und geschlossen. Es ist kompliziert, es ist nicht ideal, aber so wie es momentan gebaut wird. Das beste Beispiel, das ich Ihnen zeigen kann, ist der Link in meinem Beitrag. Wenn Sie ein Projekt öffnen und auf die Schaltflächen "Zurück"/"Weiter" klicken, sehen Sie, dass das Div-Fenster ausgeblendet wird. Ich brauche die Pfeiltasten, um das Gleiche zu tun. –

Antwort

2

Sie können eine Wrapper-Funktion schreiben, die eine Fadeaway-Klasse hinzufügt und setTimeout ausführt.

function toggleFadeAwayClass(){ 
    var elem=document.querySelector("#project-container"); 
    elem.classList.add("fadeaway"); 
    setTimeout(function(){ 
     elem.classList.remove("fadeaway") 
    }, 350) 
} 

function activateKeyNav() 
    { 
     // Description: register keypress event on document object 
     jQuery(document).on('keydown', function(event) { 
      switch(event.which) 
      { 
       case 39: // right 
        toggleFadeAwayClass(); 
        goToNextProject(); 
        break; 

       case 37: // left 
        toggleFadeAwayClass(); 
        goToPrevProject(); 
        break; 
      } 
     }); 
    } 

Hoffe das hilft Ihnen aus.

+0

Das ist wirklich nah. Ich habe die Dateien aktualisiert, sodass der Link in meinem ursprünglichen Post diesen Code anzeigt. Es ist komisch. Die Prev/Next-Buttons werden schön ausgeblendet, aber mit den Pfeiltasten sehe ich das Div, es blendet aus und verschwindet wieder. –

+0

Nachdem ich mehr experimentiert habe, musste ich es entfernen. Es endete damit, dass eine beliebige Taste auf der Tastatur ausgelöst wurde. –

+0

Ups, ich habe es verpasst. Sie müssen den Anruf innerhalb des Switch-Falls hinzufügen. Aktualisiert die Antwort – Bkjain655

0

Nachdem die js Analyse genau, wie die Fading Werke zu kennen, und mit teilweise Code aus einer anderen Antwort, das ist, wie ich es genau gemacht verblassen, wie ich es wollte:

function activateKeyNav() 
    { 
     // Description: register keypress event on document object 
     jQuery(document).on('keydown', function(event) { 
      switch(event.which) 
      { 
       case 39: // right 
       var elem=document.querySelector("#project-container"); 
        elem.classList.add("fadeaway"); 
        setTimeout(function(){ 
         goToNextProject(); 
         elem.classList.remove("fadeaway") 
        }, 350) 
        // toggleFadeAwayClass(); 
        // goToNextProject(); 
        break; 

       case 37: // left 
       var elem=document.querySelector("#project-container"); 
        elem.classList.add("fadeaway"); 
        setTimeout(function(){ 
         goToPrevProject(); 
         elem.classList.remove("fadeaway") 
        }, 350) 
        // toggleFadeAwayClass(); 
        // goToPrevProject(); 
        break; 

       case 27: // escape 
        hasher.setHash(); 
        projectClose(); 
        break; 
      } 
     }); 
    } 

Ich dachte, wenn var elem=document.querySelector("#project-container"); wurde definiert, ich brauchte es nicht mehr, also habe ich es ohne es versucht und elem wurde nicht definiert, so dass es einen Konsolenfehler erstellt. Ist es möglich, diese Variable ganz oben einzurichten, damit ich sie nicht weiter schreiben muss?

Verwandte Themen