【问题标题】:jQuery pass object out of one function to anotherjQuery将对象从一个函数传递到另一个函数
【发布时间】:2012-03-04 01:46:16
【问题描述】:

我制作了一个小函数,我将在应用程序中多次重复使用它。好像我的语法写错了,因为我的控制台显示错误“Object [object Object] has no method '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();
}):

【问题讨论】:

  • 为什么不直接使用jQuery的fadeOut()函数呢?
  • 这将帮助您解决问题:docs.jquery.com/Plugins/Authoring
  • @rjz - 将结合 cmets 所在的其他一些好东西。

标签: jquery function object fade


【解决方案1】:

您可能希望将其制作成插件并使用以下方法:

$.fn.fadeIt = function() {

};

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

【讨论】:

    【解决方案2】:

    你可以使用.call()来设置fadeIt函数的调用上下文,像这样...

    fadeIt.call(this)
    

    解释:

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

    .call().apply() 方法可用于所有 JavaScript 函数用于此目的。

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


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

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

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

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

    ...将在被调用的函数中分解为单独的参数。

    【讨论】:

    • 整洁。我想我不知道这件事,如果我知道了,我就忘记了。
    • @GregPettit:是的,它有时非常很方便。
    【解决方案3】:

    这会修复您的代码。

    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

    【讨论】:

    • 插件或现有功能最终更好,但这直接回答了问题。一些解释而不是代码更适合答案,但我想知道谁反对它以及为什么。
    【解决方案4】:

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

    function fadeIt(obj) {
    ...
    }
    

    然后拨打fadeIt($(this));

    【讨论】:

      猜你喜欢
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多