jQuery Uncaught TypeError: La proprietà ‘$’ dell’object non è una funzione

Tutto, ho scaricato un’applicazione per moduli JS / CSS pre-popolata e sto cercando di usarla in WordPress. Ho il seguente codice:

$(document).ready(function () { /*----------------------------------------------------------------------*/ /* Parse the data from an data-attribute of DOM Elements /*----------------------------------------------------------------------*/ $.parseData = function (data, returnArray) { if (/^\[(.*)\]$/.test(data)) { //array data = data.substr(1, data.length - 2).split(','); } if (returnArray && !$.isArray(data) && data != null) { data = Array(data); } return data; }; /*----------------------------------------------------------------------*/ /* Image Preloader /* http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript /*----------------------------------------------------------------------*/ // Arguments are image paths relative to the current page. $.preload = function() { var cache = [], args_len = arguments.length; for (var i = args_len; i--;) { var cacheImage = document.createElement('img'); cacheImage.src = arguments[i]; cache.push(cacheImage); } }; /*----------------------------------------------------------------------*/ /* fadeInSlide by revaxarts.com /* Fades out a box and slide it up before it will get removed /*----------------------------------------------------------------------*/ $.fn.fadeInSlide = function (speed, callback) { if ($.isFunction(speed)) callback = speed; if (!speed) speed = 200; if (!callback) callback = function () {}; this.each(function () { var $this = $(this); $this.fadeTo(speed / 2, 1).slideDown(speed / 2, function () { callback(); }); }); return this; }; /*----------------------------------------------------------------------*/ /* fadeOutSlide by revaxarts.com /* Fades out a box and slide it up before it will get removed /*----------------------------------------------------------------------*/ $.fn.fadeOutSlide = function (speed, callback) { if ($.isFunction(speed)) callback = speed; if (!speed) speed = 200; if (!callback) callback = function () {}; this.each(function () { var $this = $(this); $this.fadeTo(speed / 2, 0).slideUp(speed / 2, function () { $this.remove(); callback(); }); }); return this; }; /*----------------------------------------------------------------------*/ /* textFadeOut by revaxarts.com /* Fades out a box and slide it up before it will get removed /*----------------------------------------------------------------------*/ $.fn.textFadeOut = function (text, delay, callback) { if (!text) return false; if ($.isFunction(delay)) callback = delay; if (!delay) delay = 2000; if (!callback) callback = function () {}; this.each(function () { var $this = $(this); $this.stop().text(text).show().delay(delay).fadeOut(1000,function(){ $this.text('').show(); callback(); }) }); return this; }; /*----------------------------------------------------------------------*/ /* leadingZero by revaxarts.com /* adds a leding zero if necessary /*----------------------------------------------------------------------*/ $.leadingZero = function (value) { value = parseInt(value, 10); if(!isNaN(value)) { (value < 10) ? value = '0' + value : value; } return value; }; }); 

Supponevo che WordPress non causasse alcun problema causando un problema, quindi ho aggiornato l’ultima parentesi in modo che assomigliasse al seguente:

 }, "jQuery"); 

Tuttavia, sto ancora ricevendo lo stesso errore. Qualcuno sa cosa potrebbe incastrare questo problema e come risolverlo?

Grazie in anticipo!

Questo è un problema di syntax, la libreria jQuery inclusa con WordPress viene caricata in modalità “nessun conflitto”. Questo serve a prevenire problemi di compatibilità con altre librerie javascript che WordPress può caricare. Nella modalità “no-confict”, la scorciatoia $ non è disponibile e il jQuery più lungo viene utilizzato, ad es

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

Includendo la parentesi $ dopo la chiamata alla funzione, è ansible utilizzare questo collegamento all’interno del blocco di codice.

Per dettagli completi vedi WordPress Codex

Il mio costrutto preferito non conflittuale:

 jQuery(function($) { // ... }); 

Chiamare jQuery con un puntatore a funzione è una scorciatoia per $ (document) .ready (…)

O come diciamo nel coffeescript:

 jQuery ($) -> # code here 

In WordPress basta sostituire

 $(function(){...}); 

con

 jQuery(function(){...}); 

Puoi considerare di sostituire lo script jQuery di WordPress predefinito con Google Library aggiungendo qualcosa di simile al seguente nel file functions.php di theme:

 function modify_jquery() { if (!is_admin()) { wp_deregister_script('jquery'); wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', false, '1.10.2'); wp_enqueue_script('jquery'); } } add_action('init', 'modify_jquery'); 

Codice preso da qui: http://www.wpbeginner.com/wp-themes/replace-default-wordpress-jquery-script-with-google-library/

forse hai un codice come questo prima del jquery:

 var $jq=jQuery.noConflict(); $jq('ul.menu').lavaLamp({ fx: "backout", speed: 700 }); 

e loro erano in conflitto

puoi cambiare $ in (jQuery)