【发布时间】:2014-09-27 09:03:42
【问题描述】:
我的页面上有一些元素,我想通过 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)... 中的代码立即运行,而不是在一段时间后运行!
如何以及为什么?
【问题讨论】:
-
如果你以
(this)结束你的匿名函数,你传递的是它的返回值,而不是函数。
标签: javascript jquery web