2015-01-31 8 views
6

Ich versuche, eine separate JavaScript-Datei mobile-menu.js zu meinem Wordpress-Theme zu laden. Wenn ich auf die Konsole schaue, heißt es: "jQuery ist nicht definiert." Ich weiß jedoch, dass ich meine Skriptdateien korrekt eingereiht habe. Irgendwelche Ideen?jQuery ist nicht in Wordpress definiert, aber mein Skript ist ordnungsgemäß eingereiht

HTML-Datei:

<a href="#" id="menu-icon"></a> <!--this line wasn't here originally--> 
    <div id="switchmenu"><!--switchmenu begin--> 
     <?php wp_nav_menu(array('theme_location' => 'primary')); ?> 
    </div><!--switchmenu end--> 

functions.php Datei:

function lapetitefrog_scripts() { 
    wp_enqueue_style('lapetitefrog-style', get_stylesheet_uri()); 
    wp_enqueue_script('lapetitefrog-mobile-menu', get_template_directory_uri() . '/js/mobile-menu.js', array(), '1.0', true); 
} 
add_action('wp_enqueue_scripts', 'lapetitefrog_scripts'); 

Handy-menu.js Datei:

jQuery(document).ready(function($) { 
    $('#menu-icon').click(function() { 
      $('#switchmenu').slideToggle("fast"); 
    }); 
}); 
+1

Versuchen Sie folgendes: 'jQuery (document) .ready (function() { jQuery ('# Menü-Symbol') klicken (function() { jQuery ('# switchmenu') slideToggle (“.. schnell "); }); });' –

+1

Überprüfen Sie, ob auf derselben Seite zwei jquery-Dateien enthalten sind. –

Antwort

12

wp_enqueue_script('jquery'); hinzufügen, bevor Sie Ihre Skripte einreihen.  

+0

Das hat funktioniert! Ich danke dir sehr! Ich finde dieses Problem sehr seltsam, weil ich diesen Code noch nie zu meinen Skripten hinzufügen musste ... würdest du zufällig wissen, warum es dieses Mal notwendig ist? Vielen Dank! – nicatoby

+0

Uhm, es ist nur, wie ich verstehe, wie es nach dem Wordpress Codex und den Supportforen funktioniert, also habe ich es von Anfang an in meine Plugins und Themes eingefügt, ohne es jemals zu hinterfragen. Es gibt auch ein paar andere, zB 'wp_print_scripts ('editor');' wenn du wp_edit benutzen willst .... Ich füge sie nur standardmäßig hinzu, abhängig davon, welche Code-Schnipsel ich zu welchem ​​Zweck habe. Entschuldigung, ich kann nicht mehr ausarbeiten. –

+0

@GavinSimpson Wo ist die Datei functions.php? Innerhalb der "wp-contents/themes" richtig? Wenn ja, welchen sollte ich ändern? Es gibt 2 functions.php, eine innerhalb des normalen Ordners und eine andere in einem child-Ordner. – adelriosantiago

4

zunächst sicherstellen, dass Jquery-Datei in die umfassen wird Header, und Ihre Datei benötigt jQuery

wp_enqueue_script( 
     'lapetitefrog-mobile-menu', 
     get_template_directory_uri() . '/js/mobile-menu.js', 
     array('jquery'), 
     '1.0', 
     true 
); 

Zweitens sollten Sie Ihre JavaScript-Datei wie starten:

(function($) { 
    $(document).ready(function() { 
     ....... 
    }); 
})(jQuery); 

ODER

// Use jQuery in place of $ 
jQuery(document).ready(function() { 
    ..... 
}); 
+0

Das Hinzufügen der 'jquery' im Array() scheint das jQuery undefined Problem beseitigt zu haben. Aber jetzt, wenn ich das Netz-Panel überprüfe, bekommt es nicht einmal die Datei mobile-menu.js. Was könnte falsch sein? – nicatoby

+0

@nicatoby Check in der Fußzeile, Sie definieren die Option 'true' in' wp_enqueue_script() ' –

+0

Nein, es ist nicht da. – nicatoby

0

Wordpress Schiffe mit jQuery standardmäßig

// Adds jQuery 
    add_action('init', 'childoftwentyeleven_down'); 

     function childoftwentyeleven_down() { 

      // register your script location, dependencies and version 
       wp_register_script('down', 
        get_stylesheet_directory_uri() . '/js/down.js', 
        array('jquery')); 
      // enqueue the script 
      wp_enqueue_script('down'); 

     } 
2

können Sie versuchen:

enqueue JQuery zuerst.

wp_enqueue_script('jquery'); 

und dann Einreihen letztere Skript mit JQuery Abhängigkeit 3. Argument heißt array('jquery') das ist, was vor allem Menschen vergessen.

wp_enqueue_script('lapetitefrog-mobile-menu', get_template_directory_uri() . '/js/mobile-menu.js', array('jquery'), '1.0', true);