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?
manafire
13 nov. 2012 21:33:55
Întrebări similare
4
răspunsuri
2
răspunsuri