Jquery插件占用相同的函数名 – >冲突

我使用jquery expose插件和Masked Input插件遇到了问题。 问题是它们都占用$.mask函数,导致冲突。 但我非常需要这两个插件一起工作。 我会在其中一个中将$.mask重命名$.mask …让我们说, $.msk ,但在这种情况下我总是需要记住它,如果我想升级到新版本,我会再次重命名。

寻找更好的解决方案,以解决如何处理jquery插件之间的这种冲突。

我想我同意穆的回答。 一个补充可能是使用jQuery.sub() 。

由于大多数插件在构造期间使用jQuery全局,因此您应该能够在加载其中一个插件之前对jQuery进行别名。 然后,您可以随后重新别名为您选择的任何内容。

     

这种方法唯一可能的优点是它可能将一个插件与另一个插件可能对jQuery方法所做的更改隔离开来。 它有点令人费解,但是我能想到的唯一替代改变插件的方法。

我认为你可以选择需要你记住某些东西的解决方案,问题是你多久想要记住一次。

如果您重命名其中一个,那么您必须记住修补任何升级。 我不认为这是一个大问题,它一直在软件开发中发生。

另一种方法是拉入其中一个插件,然后立即加载一个名称空间修补程序,例如, jQuery.fn.masked_input = jQuery.fn.mask; 然后可以在此之后加载公开插件。 只要重命名的插件在任何地方都没有引用自己的名称,这种方法就可以工作。 而且,您必须记住插件的特定加载顺序。 这种事情也一直在软件开发中发生。

好。 我现在正在回答我的问题。

我认为mu太短了 ,但它并不合适。 我的同事提供了以下内容:

我们像这样创建jQuery的新实例:

 var $$$ = $.extend( true, function(selector, context) { return new $$$.fn.init( selector, context ); }, $); $$$.fn = $$$.prototype = jQuery.prototype; 

我们在其上创建$ function的插件闭包(因为$在插件中使用):

 (function($) { ... plugin code goes here ... $.fn.extend({ myplugin: function(maybe_some_options) { ... })($$$); 

现在我们可以调用$$$().myplugin( { do : 'great job', and : 'be happy' } );$().myplugin()同时。

到目前为止,我们对这种方法没有任何问题,我也没有看到它会破坏的原因,所以我们决定采用这个决定。