【发布时间】:2015-07-05 15:31:23
【问题描述】:
我已经为我当前的项目实现了几个 jQuery 插件。
由于有些插件有同名的函数,所以最后一个定义的函数调用的那个。
这是我的第一个插件的定义:
$(function($)
{
$.fn.initPlugin1 = function(parameters)
{
var defaultParameters = {};
$(this).data('parameters', $.extend(defaultParameters, parameters));
return $(this);
};
$.fn.function1 = function(){ console.log('Function 1.'); };
$.fn.callFunction = function(){ $(this).function1(); };
});
这是我的第二个插件的定义:
$(function($)
{
$.fn.initPlugin2 = function(parameters)
{
var defaultParameters = {};
$(this).data('parameters', $.extend(defaultParameters, parameters));
return $(this);
};
$.fn.function2 = function(){ console.log('Function 2.'); };
$.fn.callFunction = function(){ $(this).function2(); };
});
我也有这种情况:
$("#div1").initPlugin1().callFunction();
$("#div2").initPlugin2().callFunction();
对于这个特定场景,控制台显示:Function 2. Function 2.
其实因为callFunction()在第二个插件中也有定义,所以就用这个了。
我想就解决此问题的最佳方法提供一些建议。 是否可以创建类似于命名空间的东西?
【问题讨论】:
-
$.fn.callFunction是 jquery 插件,为什么要在两种情况下将其扩展为不同。所以不要为此使用原型方法。 -
你也想这样写吗:
$("#div1").callFunction();? -
@dfsq 将不胜感激!
标签: javascript jquery function plugins overwrite