Nu pot apela funcția Javascript - problemă de scope?
13 nov. 2012, 20:51:26
Vizualizări: 14.6K
Voturi: 0
Primesc o eroare "method not defined" când încerc să apelez o funcție încărcată cu wp_enqueue_script
din site.js
.
Presupun că e din cauza scope-ului creat de wrapper-ele jQuery ready? Cum pot rezolva această problemă?
site.js (încărcat în head
)
jQuery(document).ready(function($) {
$(window).load(function() { // așteaptă până când totul s-a încărcat
doSomething(); // rezultă într-o eroare
});
});
my-script.js (încărcat în footer)
jQuery(document).ready(function($) {
function doSomething() {
alert("E timpul pentru o pauză de cafea!");
}
});
functions.php
wp_register_script( 'my-script', get_template_directory_uri().'/js/my-script.js', array( 'jquery' ), '', true );
wp_enqueue_script( 'my-script' );
// Trimite variabile PHP în JavaScript
wp_localize_script( 'my-script', 'my_script', localize_post_vars() );
Toate răspunsurile la întrebare
1
2
Trebuie să plasezi funcția doSomething
în namespace-ul corect, sau măcar într-un namespace. Cea mai simplă metodă ar fi să o plasezi în namespace-ul window
:
jQuery(document).ready(function($) {
window.doSomething = function() {
alert("E timpul pentru o pauză de cafea!");
};
});

totels
1.73K
13 nov. 2012 21:29:28
Comentarii
Mulțumesc! Dacă omit window.
, codul de atribuire a funcției funcționează și el. Implicit, se folosește namespace-ul window
în acest caz?

13 nov. 2012 21:33:55
Întrebări similare
4
răspunsuri
2
răspunsuri