$ nu este definit folosind jQuery în WordPress
Știu că jQuery este încărcat, deoarece pot înlocui $
cu 'jQuery' și totul funcționează conform așteptărilor, dar acest script va fi dezordonat dacă nu pot rezolva această problemă
Acest script:
jQuery(document).ready(function(){
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
})
});
Generează eroarea $ is not a function
Acest script:
jQuery(document).ready(function(){
jQuery("ul.vimeo_desc_feed li a").click(function(){
alert(jQuery(this).attr('href'));
return false;
})
});
funcționează corect.

Poți încadra codul tău JavaScript într-o funcție auto-invocatoare, apoi să transmiți jQuery
ca argument acesteia, folosind $
ca nume de variabilă locală. De exemplu:
(function($) {
$(document).ready(function(){
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
})
});
}(jQuery));
ar trebui să funcționeze conform așteptărilor.
Dacă îmi amintesc corect, versiunea de jQuery furnizată de WordPress (cea pe care o obții cu wp_enqueue_script('jquery')
) activează modul no-conflict imediat, ceea ce face ca $
să fie nedefinit.

Ah, înțeleg. Eu obișnuiam să-l adaug manual, ceea ce explică de ce nu am întâlnit această problemă.

Mulțumesc, foloseam formatul alternativ cu jQuery la început în loc de sfârșit... dar nu-mi puteam da seama cum să returnez o valoare. Cu acest format, am adăugat pur și simplu return înaintea funcției auto-invocative și funcționează.

Ești aproape gata!
jQuery(document).ready(function($){
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
})
});
Trebuie să transmiți o referință la jQuery ca funcție $
în metoda ta, altfel nu va funcționa. Dacă pur și simplu plasezi un $ în interiorul primului apel function()
așa cum am făcut mai sus, lucrurile vor funcționa perfect.

...dar nu este modul standard de a face o funcție anonimă. http://forum.jquery.com/topic/jquery-anonymous-function-calls

Da și nu. Ambele sunt considerate metode "standard" de a face acest lucru. Una creează o clasă singleton care are $
definit local. Cealaltă doar definește un handler pentru evenimentul ready
al documentului și trece obiectul jQuery în handler ca $
. Dacă încerci să te conectezi la evenimentul ready
, a doua metodă este mai folosită. Dacă ai nevoie de jQuery pentru orice alt scop (de exemplu, pentru a te conecta la $.browser
), ai folosi o clasă singleton.

+1 pentru jQuery(document).ready(function($){... mai multe informații despre jQuery și WordPress le poți citi și în articolul meu: http://wpengineer.com/2028/small-tips-using-wordpress-and-jquery/ .

Transmiterea unei funcții către jQuery este o prescurtare pentru $(document).ready(...)
, apoi prin plasarea $
ca prim parametru al funcției tale de callback, creezi un alias pentru jQuery în cadrul acelui callback:
jQuery(function($) {
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
});
});
Puteți consulta documentația pentru aceasta aici.
