Не могу вызвать функцию JavaScript - проблема области видимости?
13 нояб. 2012 г., 20:51:26
Просмотры: 14.6K
Голосов: 0
Получаю ошибку "метод не определен" при попытке вызвать функцию из site.js, которая загружена с помощью wp_enqueue_script.
Предполагаю, что проблема в области видимости из-за оберток jQuery ready. Как это обойти?
site.js (загружается в head)
jQuery(document).ready(function($) {
$(window).load(function() { // ждем полной загрузки страницы
doSomething(); // получаем face palm
});
});
my-script.js (загружается в подвале)
jQuery(document).ready(function($) {
function doSomething() {
alert("Пора на перерыв!");
}
});
functions.php
wp_register_script( 'my-script', get_template_directory_uri().'/js/my-script.js', array( 'jquery' ), '', true );
wp_enqueue_script( 'my-script' );
// Передаем PHP переменные
wp_localize_script( 'my-script', 'my_script', localize_post_vars() );
Все ответы на вопрос
1
2
Вам необходимо поместить вашу функцию doSomething в правильное пространство имен (namespace), или хотя бы в какое-либо пространство имен. Самый простой способ - разместить ее в пространстве имен window:
jQuery(document).ready(function($) {
window.doSomething = function() {
alert("Время для кофе-брейка!");
};
});
totels
1.73K
13 нояб. 2012 г. 21:29:28
Комментарии
Спасибо! Если я опущу window., код с присваиванием функции тоже работает. В этом случае по умолчанию используется пространство имен window?
manafire
13 нояб. 2012 г. 21:33:55
Похожие вопросы
4
ответов
2
ответов