Non riesco a chiamare la funzione Javascript - problema di scope?
13 nov 2012, 20:51:26
Visualizzazioni: 14.6K
Voti: 0
Ottengo un errore "method not defined" quando provo a chiamare una funzione caricata con wp_enqueue_script
da site.js
.
Sospetto che sia un problema di scope causato dai wrapper jQuery ready. Come posso risolverlo?
site.js (caricato nell'head
)
jQuery(document).ready(function($) {
$(window).load(function() { // attende che tutto sia caricato
doSomething(); // risultato: face palm
});
});
my-script.js (caricato nel footer)
jQuery(document).ready(function($) {
function doSomething() {
alert("È ora di una pausa caffè!");
}
});
functions.php
wp_register_script( 'my-script', get_template_directory_uri().'/js/my-script.js', array( 'jquery' ), '', true );
wp_enqueue_script( 'my-script' );
// Passa variabili PHP
wp_localize_script( 'my-script', 'my_script', localize_post_vars() );
Tutte le risposte alla domanda
1
2
Devi inserire la tua funzione doSomething
nel namespace corretto, o almeno in un namespace. Il modo più semplice sarebbe inserirla nel namespace window
:
jQuery(document).ready(function($) {
window.doSomething = function() {
alert("È ora di una pausa caffè!");
};
});

totels
1.73K
13 nov 2012 21:29:28
Commenti
Grazie! Se ometto window.
, anche il codice di assegnazione della funzione funziona. In questo caso sta utilizzando il namespace window
di default?

13 nov 2012 21:33:55
Domande correlate
4
risposte