我的页面上有一些元素,我想通过JQuery扩展函数调用它们的函数。我有这个函数声明:
(function ($) {
$.fn.enable = function (delay) {
console.log(delay); //logs 3000
setTimeout(function (elem) {
console.log(elem);
elem.css("opacity", "1");
}(this), delay);
return this;
};
})(jQuery);
如您所知,它在JQuery对象上声明了enable
函数。现在我打电话的时候是这样的:
$("#start").enable(3000);
函数enable
会运行,但function (elem)...
内的代码会立即运行,而不会在一段时间后运行!
如何以及为何?
答案 0 :(得分:3)
那是因为你正在调用函数" function(elem)"而不是将其作为争论提供。试试这个
(function ($) {
$.fn.enable = function (delay) {
console.log(delay); //logs 3000
var elem = this;
setTimeout(function () {
console.log(elem);
elem.css("opacity", "1");
}, delay); //you should not call a function here
return this;
};
})(jQuery);