jquery将其传递给变量函数
jquery passing this to variable function
我正在尝试制作自己的图像旋转器,如果屏幕上有多个图像旋转器,它将起作用。这是我到目前为止得到的:
// jQuery plugin to make image containers rotate.
(function($){
// Swap text with title attribute
$.fn.scWFWImageRotator = function() {
var rotatorTimeSwap = 6000;
$(this).find("img").removeClass("selected");
$(this).find("img:first-child").addClass("selected");
var rotatorImageChangeFunc = function(item) {
var rotatorImages = $(item).children("img");
var imgSelected = $(item).children("img.selected");
var rotatorImgCount = rotatorImages.length;
var rotatorCurImage = $(imgSelected).index(rotatorImages);
alert(item);
}
return this.each(function() {
var rotatorTimer;
var $this = $(this);
var func = $.proxy( rotatorImageChangeFunc, $this );
rotatorTimer = setInterval(func, rotatorTimeSwap);
$this.hover(
function() { rotatorTimer = clearInterval(rotatorTimer); },
function() { rotatorTimer = setInterval(func, rotatorTimeSwap); }
);
});
};
})(jQuery);
问题是:rotatorImageChangeFunc = function(item) {
项没有传递给函数。所以在该函数中,我正在为项目定义。为什么会这样,我该怎么说?
传递给 proxy
的上下文参数将作为 this
传递给函数,而不是作为参数。只需将item
更改为this
即可。
旁注:在你的主函数中,你有几个$(this).find(...)
。插件函数看到的this
已经是一个 jQuert 对象(这就是下面的this.each(...)
工作的原因(,无需再次调用$()
。只是this.find(...)
.
$.proxy
只为包装的函数设置this
- 它不对函数参数执行任何操作。
setInterval()
将调用没有参数的代理函数,因此原始函数也是如此 - item
将是未定义的。
若要修复,请从函数的声明中删除item
,然后执行以下操作:
var item = this;
在函数的第一行。
[或用 this
重命名对item
的所有引用]。
您尚未定义变量项 anaywhere。
相关文章:
- 带有两个变量函数的Ajax提交表单
- 设置变量函数不起作用
- 为什么使用 ||在变量函数声明中
- Javascript 变量函数不保留值
- 为什么要在函数定义之外引用静态变量(函数属性)
- jQuery 变量函数无法运行
- 循环中的变量函数定义
- javascript onclick设置为变量函数名
- JavaScript:调用已启动类(数据包处理程序)的变量函数
- Javascript测试存根全局变量函数
- Aptana能否识别其他文件中定义的变量/函数
- jquery将其传递给变量函数
- 传递一个变量函数到数组[Javascript]
- 如何使用' this '像一个对象,并通过字符串获得它的变量/函数
- javascript变量/函数的首字母是什么意思?
- Javascript .apply带有变量函数名
- 在JavaScript中添加一个全局变量/函数(特别是NativeScript)
- 变量函数未定义错误
- AngularJS-继续检查变量/函数
- Javascript从本地向全局变量函数添加行