Ik heb een eenvoudig jQuery-script in een WordPress-plug-in die een jQuery-wrapper zoals deze gebruikt:
$(document).ready(function(){
// jQuery code is in here
});
Ik roep dit script aan vanuit het WordPress-dashboard en laad het NADAT het jQuery-framework is geladen.
Als ik de pagina in Firebug controleer, krijg ik constant de foutmelding:
TypeError: $ is geen functie
$(document).ready(function(){
Moet ik het script misschien in deze functie stoppen:
(function($){
// jQuery code is in here
})(jQuery);
Ik heb deze fout al een paar keer gehad en weet niet zeker hoe ik ermee om moet gaan.
Alle hulp wordt zeer op prijs gesteld.
Antwoord 1, autoriteit 100%
Als u jQuery in WordPress in de wachtrij plaatst, moet u standaard jQuery
gebruiken en $
wordt niet gebruikt (dit is voor compatibiliteit met andere bibliotheken).
Uw oplossing om het in function
in te pakken, werkt prima, of u kunt jQuery op een andere manier laden (maar dat is waarschijnlijk geen goed idee in WordPress).
Als je document.ready
moet gebruiken, kun je eigenlijk $
doorgeven aan de functieaanroep:
jQuery(function ($) { ...
Antwoord 2, autoriteit 48%
Dit zou het moeten oplossen:
jQuery(document).ready(function($){
//you can now use $ as your jQuery object.
var body = $( 'body' );
});
Simpel gezegd, WordPress voert zijn eigen scripting uit voordat jij dat kunt en ze geven de $
var vrij zodat deze niet in botsing komt met andere bibliotheken. Dit is volkomen logisch, aangezien WordPress wordt gebruikt voor allerlei soorten websites, apps en natuurlijk blogs.
Uit hun documentatie:
De jQuery-bibliotheek die bij WordPress wordt geleverd, is ingesteld op noConflict()
modus (zie wp-includes/js/jquery/jquery.js). Dit is om te voorkomen
compatibiliteitsproblemen met andere JavaScript-bibliotheken die WordPress
kan linken.In de modus noConflict() is de algemene $ sneltoets voor jQuery niet
beschikbaar…
Antwoord 3, autoriteit 9%
Deze oplossing werkte voor mij
;(function($){
// your code
})(jQuery);
Verplaats uw code binnen de sluiting en gebruik $
in plaats van jQuery
Ik vond de bovenstaande oplossing in https://magento.stackexchange.com/questions/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
…na teveel zoeken
Antwoord 4, autoriteit 8%
var $=jQuery.noConflict();
$(document).ready(function(){
// jQuery code is in here
});
Met dank aan Ashwani Panwar en Cyssoo antwoord: https://stackoverflow.com/a/29341144/3010027
Antwoord 5, autoriteit 6%
Je kunt conflicten op deze manier vermijden
var jq=jQuery.noConflict();
jq(document).ready(function(){
alert("Hi this will not conflict now");
jq('selector').show();
});
6, Autoriteit 4%
Probeer dit:
<script language="JavaScript" type="text/javascript" src="jquery/jquery.js"></script>
<script>
jQuery.noConflict();
(function ($) {
function readyFn() {
// Set your code here!!
}
$(document).ready(readyFn);
})(jQuery);
</script>
7, Autoriteit 3%
U moet $ in functie ()
passeren
<script>
jQuery(document).ready(function($){
// jQuery code is in here
});
</script>
8, Autoriteit 3%
Ook vind ik de goede oplossing voor gebruik JQuery Noconflict-modus.
(function($){
$(document).ready(function(){
// write code here
});
// or also you can write jquery code like this
jQuery(document).ready(function(){
// write code here
});
})(jQuery);
Ik vond deze oplossing van here tryvary.com .
9, Autoriteit 2%
Controleer je jQuery-referenties. Het is mogelijk dat u het meer dan één keer verwijst of u bent uw functie te vroeg bellen (voordat JQuery is gedefinieerd). U kunt proberen zoals vermeld in mijn opmerkingen en een jQuery-referentie bovenaan uw bestand (in het hoofd) plaatsen en zien of dat helpt.
Als u de inkapseling van jQuery gebruikt, moet het in dit geval niet helpen. Probeer het alsjeblieft omdat ik denk dat het mooier en duidelijker is, maar als jQuery niet is gedefinieerd, krijg je dezelfde fouten.
Uiteindelijk … jQuery is momenteel niet gedefinieerd.
10, Autoriteit 2%
Gebruik
jQuery(document).
in plaats van
$(document).
of
Binnen de functie, $ punten naar jQuery zoals u zou verwachten
(function ($) {
$(document).
}(jQuery));
11, Autoriteit 2%
(functie ($) { "Gebruik streng"; $ (functie () { // uw code hier }); } (jQuery));
12
Wat voor mij werkte. De eerste bibliotheek om te importeren is de querybibliotheek en rechts dan bel de methode jQuery.noconflict ().
<head>
<script type="text/javascript" src="jquery.min.js"/>
<script>
var jq = jQuery.noConflict();
jq(document).ready(function(){
//.... your code here
});
</script>
13
<script>
var jq=jQuery.noConflict();
(function ($)
{
function nameoffunction()
{
// Set your code here!!
}
$(document).ready(readyFn);
})(jQuery);
gebruik nu jq in plaats van jQuery
Antwoord 14
U komt dit probleem tegen wanneer uw functienaam en een van de id-namen in het bestand hetzelfde zijn. zorg er gewoon voor dat al uw ID-namen in het bestand uniek zijn.
Antwoord 15
U kunt gebruiken
jQuery(document).ready(function(){ ...... });
of
(function ($) { ...... }(jQuery));