Потерянный в объеме JavaScript - PullRequest
0 голосов
/ 12 июля 2011

Может кто-нибудь помочь мне с (упрощенным) кодом ниже.Я пытаюсь вызвать функцию doTheSlide() из функции события слайда.Я все еще немного сомневаюсь в своем понимании области применения в JS.

Как правильно достичь этого?Я получаю эту ошибку:

Uncaught TypeError: object is not a function

(function($) {

    bindEvent = function(slider) {

        slider.bind('slide', function(event, ui) {

            doTheSlide(ui.value);
        });
    }

    doTheSlide = function(value) {
        //Animate the slide
    }


    var methods


})(jQuery);

1 Ответ

5 голосов
/ 12 июля 2011

Вам нужно где-нибудь объявить doTheSlide. Вы, кажется, используете его как глобальную функцию, что в большинстве случаев неверно. Убедитесь, что все объявлено правильно (с помощью var или с использованием именованной функции).

Вот исправленная версия вашего кода (как я предпочитаю):

(function($) {
    function doTheSlide(value) {
        //Animate the slide
    }

    function bindEvent(slider) {
        slider.bind('slide', function(event, ui) {
            doTheSlide(ui.value);
        });
    }
})(jQuery);

Не забудьте объявить функции перед их использованием. Будет работать вызов функции, которая объявлена ​​позже, но это не очень хороший стиль.

Альтернативный синтаксис:

(function($) {
    var doTheSlide = function(value) {
        //Animate the slide
    };

    var bindEvent = function(slider) {
        slider.bind('slide', function(event, ui) {
            doTheSlide(ui.value);
        });
    };
})(jQuery);
...