* MooTools代码中的jQuery *有多邪恶?

我生活和呼吸jQuery,但我也喜欢找到一个出色的插件来完成我想要的工作.

我的Rails应用程序是用jQuery编写的,但是对于文件上传,我还没有找到比FancyUpload更好的东西(比UploadifySWFUpload更好的恕我直言).尝试了所有三个库后,FancyUpload是最好的集成到我的应用程序中.

但是,FancyUpload基于MooTools,加载这两个库(更不用说使用它们)开始有点令人头疼.首先,我只在使用上传功能页面上加载MooTools;所有其他页面都使用jQuery.第二,我不得不manually namespace many of my jQuery functions,这有点烦人.

但也许这种设置最麻烦的特点是我不知道MooTools.因为我已经能够使用jQuery完成其他所有工作,所以我从不费心去学习.既然我强迫自己使用这个FancyUpload库(我喜欢并希望继续使用),我就面临着MooTools的无能.

具体来说,这是FancyUpload的onFileSuccess函数

onFileSuccess: function(file,response) {
    var json = new Hash(JSON.decode(response,true) || {});

    if (json.get('status') == '1') {

      // success
        file.element.addClass('file-success');
        (function ($,elem,queue_item) {
          $('#images').append($(elem).hide().fadeIn('slow'));
          $(queue_item).fadeOut('slow',function () { $(this).remove(); });
        })(jQuery,json.get('data'),file.element);

    } else {

      // failure
        file.element.addClass('file-Failed');

    }
}

正如您将注意到的,我在MooTools函数中间有一个jQuery函数.

我的问题是:这是一件非常糟糕的事吗?我的功能正如我所希望的那样工作,但我不知道我是否会通过这样做来为未来的灾难而滚雪球.

如果这真的是一个坏主意,有人可以给我一个关于MooTools等效代码的指针吗?

我很感激任何见解或帮助.

最佳答案
这通常不是问题,但我建议不要在任何功能中混合特定于框架的代码,除非您使用的框架不提供您需要的功能.这样,您可以保持可移植性,并且您只需要一个要求,而不需要2个不同库的2个特定版本.

你的代码应该是这样的:

onFileSuccess: function(file,true) || {});

    if (json.get('status') == '1') {
      // success
        file.element.addClass('file-success');
        document.id('images').adopt(document.id(json.get('data')).fade('hide').fade('in'));
        document.id(file.element).set('tween',{
          onComplete: function() { this.element.dispose();}
        }).fade('out');
    } else {
      // failure
        file.element.addClass('file-Failed');
    }
}

编辑:刚才注意到Dimitar做了一个类似的回复.我的解决方案工作原理完全相同,但正确地避免使用混合框架时特别需要的$函数.

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...