有人可以帮我解决下面的(简化)代码。我正在尝试从幻灯片事件函数中调用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);
答案 0 :(得分:5)
你需要在某处声明'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);