jQuery将一个函数中的对象传递给另一个函数

时间:2012-03-04 01:46:16

标签: jquery function object fade

我做了一个小功能,我将在应用程序中多次重复使用。好像我写的语法错了,因为我的控制台显示错误“对象[对象对象]没有方法'fadeIt'

所以我想象的问题是将一个函数的对象传递给另一个函数..不确定如何优雅地执行它。我的代码如下。

感谢您的帮助!

http://jsfiddle.net/danielredwood/aFx6u/2/

function fadeIt() {
    $(this).animate({
        opacity:0
    }, 400, function(){
        //$(this).css('cursor','auto');
        //$(this).children('img').css('margin-left','-100px');
    });
}

$('.box').click(function(){
    $(this).fadeIt();
}):

4 个答案:

答案 0 :(得分:2)

您可能希望将其变为插件并使用以下方法:

$。fn.fadeIt = function(){

};

然后你可以使用$(this).fadeIt();

答案 1 :(得分:1)

您可以使用fadeIt设置.call()功能的调用上下文,就像这样......

fadeIt.call(this)

说明:

JavaScript有两种方法,.call().apply(),它们都允许您在调用时手动设置您正在调用的函数中的this的值。

为此,所有JavaScript函数都可以使用.call().apply()方法。

该方法的第一个参数是您要在要调用的函数中为this设置的值。两者之间的唯一区别是如何传递参数。


使用.call(),参数将单独传递,例如......

func.call(thisArg, 'foo', 'bar')

使用.apply(),参数将作为类似数组的集合传递...

func.apply(thisArg, ['foo', 'bar'])

...将被调用为被调用函数中的单个参数。

答案 2 :(得分:0)

这会修复您的代码。

function fadeIt(element) {
    element.animate({
        opacity:0
    }, 400, function() {
        // element.css('cursor','auto');
        // element.children('img').css('margin-left','-100px');
    });
}

$('.box').click(function() {
    fadeIt($(this));
}):

但是,我强烈建议使用jQuery的内置函数,例如fadeOutfadeIn

答案 3 :(得分:0)

您要做的是使用点符号调用函数,在Javascript中仅限于对象的原型。你想要做的是改变它,所以你将this作为参数传递给fadeIt

function fadeIt(obj) {
...
}

然后致电fadeIt($(this));