我为我当前的项目实现了几个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()
也在第二个插件中定义,因此使用的是。{/ p>
我想建议一下解决这个问题的最佳方法是什么。 是否可以创建类似命名空间的东西?
答案 0 :(得分:0)
你可以试试这个,
$(function($) {
$.fn.initPlugin1 = function() {
console.log('Initialized Plugin1');
return $(this);
};
});
$(function($) {
$.fn.initPlugin2 = function() {
console.log('Initialized Plugin2');
return $(this);
};
$.fn.callFunction = function(param) {
$(this).append(param);
};
});
(function($) {
$(document).ready(
function() {
$("#div1").initPlugin1(); //Run correctly
$("#div2").initPlugin2(); //Run correctly
$("#div1").initPlugin1().callFunction('function1');
$("#div2").initPlugin2().callFunction('function2');
});
})(jQuery);

答案 1 :(得分:0)
感谢@syms的回答,我创建了以下示例。
<强> Plugin1:强>
$(function($) {
$.fn.initPlugin2 = function() {
console.log('Initialized Plugin2');
return $(this);
};
$.fn.initPlugin2.testFunction = function() {
$(this).append('Function 2.');
};
});
<强> Plugin2:强>
(function($)
{
$(document).ready(
function()
{
$("#div1").initPlugin1(); //Run correctly
$("#div2").initPlugin2(); //Run correctly
$("#div1").initPlugin1.testFunction(); //Fail
$("#div2").initPlugin2.testFunction(); //Fail
});
})(jQuery);
主要强>
Cannot read property 'createDocumentFragment' of null
当我运行我的代码时,出现以下错误:this
。
显然,schedule.StartTime = DateTime.SpecifyKind(Start, DateTimeKind.Utc);
对象已损坏。