JQuery и JavaScript пространство имен - PullRequest
0 голосов
/ 03 января 2012

Пытаясь создать пространство имен для моего кода js / jquery, я столкнулся со следующей проблемой:

По сути, я обычно записывал весь свой код JS в каждый файл html / php, и я хочу абстрагироватьсяэто в один JS-файл с пространствами имен.

Итак, в моем HTML-файле у меня есть:

<script type="text/javascript"> 
    $(document).ready(productActions.init());
</script>

И в моем JS-файле у меня есть:

var productActions = {
    init: function() {

        alert('initialsed');

        $('#field_id').change(function() {
            alert('ok!');
        });     
    }

Функция init productActions определенно работает, потому что я получаю первое предупреждение (инициализировано).Однако, похоже, что ни одна из функций привязки jquery вообще ничего не делает.Выполнение функции init показывает, что вышеописанная функция изменения регистрируется, но изменение значения в поле на самом деле абсолютно ничего не делает.

Я что-то упускаю здесь очевидное?

1 Ответ

5 голосов
/ 03 января 2012
$(document).ready(productActions.init());

Этот код вызывает init() немедленно и передает его возвращаемое значение в ready(...).(как и любой другой вызов функции)

Вместо этого вы можете написать

$(document).ready(productActions.init);

Для передачи самой функцииОднако это вызовет это с неправильным this;если вам нужно this, напишите

$(document).ready(function() { productActions.init() });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...