Javascript 使用内部变量的jQuery自定义插件之间的冲突
我开始使用很多插件来快速增强站点,但我仍然习惯于jQuery。有时我会遇到冲突。最常用的词之一是设置,自我和数据,作为内部变量用于自我参考 以下面的代码为例:Javascript 使用内部变量的jQuery自定义插件之间的冲突,javascript,jquery,plugins,Javascript,Jquery,Plugins,我开始使用很多插件来快速增强站点,但我仍然习惯于jQuery。有时我会遇到冲突。最常用的词之一是设置,自我和数据,作为内部变量用于自我参考 以下面的代码为例: (function ($) { var cheese = this; var var1; var var2; $.fn.cheesetest = function (text) { cheese.var1 = text;
(function ($)
{
var cheese = this;
var var1;
var var2;
$.fn.cheesetest = function (text) {
cheese.var1 = text;
cheese.var2 = text;
console.log(cheese.var1 + ", " + cheese.var2);
}
}(jQuery));
(function ($)
{
var cheese = this;
var var1;
var var2;
$.fn.cheese2 = function (text) {
cheese.var1 = text;
console.log(cheese.var1 + ", " + cheese.var2);
}
}(jQuery));
我使用以下命令运行代码:
$(document).ready(function () {
$('body').cheesetest('panther');
$('h2').cheese2('tiger');
})
输出为:
黑豹,黑豹
老虎,黑豹
简言之,cheese(或某些插件中的self或settings)似乎指的是共享jQuery范围,而不是该插件
问题是:如何使用内部变量以便
var self
…在一个插件中与另一个插件中的self或settings变量不冲突?这里的问题是因为您正在使用:
var cheese = this;
在这里,它将引用窗口对象,本质上,您在这里创建一个全局变量cheese
——这就是冲突的原因
(函数($){
var={};
$.fn.cheesetest=函数(文本){
cheese.var1=文本;
cheese.var2=文本;
log(cheese.var1+“,”+cheese.var2);
}
}(jQuery));
(函数($){
var={};
$.fn.cheese2=函数(文本){
cheese.var1=文本;
log(cheese.var1+“,”+cheese.var2);
}
}(jQuery));
$(文档).ready(函数(){
$(‘body’).cheesetest(‘panther’);
$('h2')。奶酪2('tiger');
})
这里的问题是因为您正在使用:
var cheese = this;
在这里,它将引用窗口对象,本质上,您在这里创建一个全局变量cheese
——这就是冲突的原因
(函数($){
var={};
$.fn.cheesetest=函数(文本){
cheese.var1=文本;
cheese.var2=文本;
log(cheese.var1+“,”+cheese.var2);
}
}(jQuery));
(函数($){
var={};
$.fn.cheese2=函数(文本){
cheese.var1=文本;
log(cheese.var1+“,”+cheese.var2);
}
}(jQuery));
$(文档).ready(函数(){
$(‘body’).cheesetest(‘panther’);
$('h2')。奶酪2('tiger');
})