Не могу вызвать функцию 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
?

13 нояб. 2012 г. 21:33:55
Похожие вопросы
4
ответов
2
ответов