No puedo llamar a función Javascript - ¿Problema de ámbito?
13 nov 2012, 20:51:26
Vistas: 14.6K
Votos: 0
Recibo un error de método no definido al intentar llamar a una función cargada con wp_enqueue_script
desde site.js
.
Supongo que es por el ámbito causado por los wrappers de jQuery ready. ¿Cómo puedo solucionarlo?
site.js (cargado en head
)
jQuery(document).ready(function($) {
$(window).load(function() { // espera hasta que todo haya cargado
doSomething(); // resulta en un face palm
});
});
my-script.js (cargado en el footer)
jQuery(document).ready(function($) {
function doSomething() {
alert("¡Hora de un descanso para café!");
}
});
functions.php
wp_register_script( 'my-script', get_template_directory_uri().'/js/my-script.js', array( 'jquery' ), '', true );
wp_enqueue_script( 'my-script' );
// Pasar variables PHP
wp_localize_script( 'my-script', 'my_script', localize_post_vars() );
Todas las respuestas a la pregunta
1
2
Necesitas colocar tu doSomething
en el espacio de nombres correcto, o al menos en un espacio de nombres. La forma más sencilla sería colocarlo en el espacio de nombres window
:
jQuery(document).ready(function($) {
window.doSomething = function() {
alert("¡Hora de un descanso para el café!");
};
});

totels
1.73K
13 nov 2012 21:29:28
Comentarios
¡Gracias! Si omito window.
, el código de asignación de la función también funciona. ¿Está tomando por defecto el espacio de nombres window
en este caso?

13 nov 2012 21:33:55
Preguntas relacionadas
4
respuestas
2
respuestas