2016-06-24 19 views
-3

Ich fand diese Funktion für ein drupal Tutorial. Kann mir jemand erklären, warum das folgende Javascript in meiner Wordpress-Installation nicht funktioniert und mir vielleicht eine Lösung bietet?Javascript wird nicht funktionieren

; 
(function ($) { 
"use strict"; 
    var $corn = $('.corn-anchor'); 
    $corn.each(function(idx, el) { 
    var $el = $(el); 
    $el.once('corn-animation', function() { 
     $(window).on('load', function() { 
     new Waypoint({ 
      element: el, 
      handler: function(direction) { 
      $el.toggleClass('corn-animated', (direction == 'down')); 
      }, 
      offset: '85%' 
     }); 
     }); 
    }); 
    }); 
}); 

ich möchte es verwenden, um einige Kapitel-Wrapper zu wechseln, die Elemente innerhalb dieser Wrapper zu animieren, indem Sie CSS-Übergänge mit dem .corn animierten Selektor. Ich benutze das Wegpunkte-Plugin. Ich bekomme nicht einmal eine Fehlermeldung im Debugger, obwohl keine toggleClass hinzugefügt wird, wenn ich zu dem Element mit der Klasse Corn-Anchor scrolle.

+1

Sie deklarieren eine anonyme Funktion, ohne sie jemals zu nennen ?! –

+0

Ja, scheint offensichtlich zu sein, aber ich habe Angst, ich bin sehr neu und versuche nur, indem ich es tue:/ – DoUtDes

Antwort

4

Nichts führt jemals den Code in der Funktion. Betrachtet man es sollte die letzte Zeile

})(jQuery); 
// ^^^^^^^^---- *call* the function, passing in `jQuery` 

nicht

}); 

auch sein, stellen Sie sicher, dass von einem script-Tag am Ende des HTML geladen wird, kurz vor dem Schließen </body>-Tag (und nach dem script Tag, das jQuery enthält). Andernfalls wird es zu früh ausgeführt und keineElemente finden.

Wenn Sie nicht steuern, wo das Skript nach oben endet (da Sie Wordpress verwenden), statt die letzte Zeile zu ändern, ändern Sie die erste:

jQuery(function ($) { 

Die jQuery nennt, vorbei in dieser Funktion; jQuery ruft die Funktion später auf (indem sie sich selbst als erstes Argument übergibt), wenn der HTML-Code analysiert wurde und das DOM aufgefüllt ist. Es ist ein Alias ​​für ready.

+0

Hallo T.J, vielen Dank für Ihre Antwort! Ich habe den Großteil der letzten Nacht genutzt, um eine Lösung dafür zu finden und konnte es nicht funktionieren lassen. Nach der Verwendung von jQuery (function) ($) {gab mir der Debugger einige Fehler, ich musste $ el.once ('corn-animation', function() {zu $ el.each (function() {und voila, it) ändern funktioniert! :) Können Sie mir erklären, warum $ el.once ('corn-animation', function() die Arbeit nicht erledigt hat? Wie auch immer, danke, vielen Dank! Vielen Dank! – DoUtDes

+0

@DoUtDes: '$ el. einmal ('corn-animation', ... 'hakt einen Event-Handler für das' corn-animation'-Event ein, das sich beim ersten Auslösen selbst entfernt. Ehrlich gesagt macht der Code keinen großen Sinn, als was drin ist es ist eine sehr seltsame Zeit, um das zu tun. –

+0

Sie wahrscheinlich richtig, da ich es geändert haben (mit Ihrer Hilfe) + es wird kopiert eines Drupal Tutorials, wo die Funktion nur ein bisschen anders aussieht, da sie mit Drupal.behaviors.name = { attach: function (context, settings) {mein Beitragscode ... Aber mit diesen zwei ersten Zeilen kann der Code nicht funktionieren, weil Wordpress etwas wie Drupal.behaviors.name nicht kennt – DoUtDes

Verwandte Themen