从具有命名空间的JQuery插件返回数据
我想创建一个使用名称空间的JQuery插件。这就是我尝试创建的返回html的简单函数:从具有命名空间的JQuery插件返回数据,jquery,Jquery,我想创建一个使用名称空间的JQuery插件。这就是我尝试创建的返回html的简单函数: (function($) { $.fn.ns = function () { return { foo1: function(){ var element = $(this); $(element).html('<b>hello</b>'); ret
(function($) {
$.fn.ns = function () {
return {
foo1: function(){
var element = $(this);
$(element).html('<b>hello</b>');
return this;
}
}
};
})(jQuery);
我做错了什么
jsiddle:以这种方式,其中必须包含with元素
(function($) {
$.fn.ns = function () {
var self = this,
element = $(this);
return {
foo1: function(){
$(element).html('<b>hello</b>');
return self;
}
}
};
})(jQuery);
这样,您就不必总是重新创建函数,而只在需要的上下文中运行它
但是,如果要保存jQuery链接,应该在fn对象中传递所有方法(在本例中为ns和foo1)。jQuery插件有很多教程和样板。建议阅读它们谢谢,但示例二不会“污染”全局名称空间吗?有一个带有就绪回调函数-
(函数($){})
和所有使用var
声明的变量的上闭包,所以它都保存在这个回调的本地范围内。也许你也应该看看js中的scope
是如何工作的。这将是有益的,mozilla有一个很好的文档和例子。
$(".sayHello").ns().foo1();
(function($) {
$.fn.ns = function () {
var self = this,
element = $(this);
return {
foo1: function(){
$(element).html('<b>hello</b>');
return self;
}
}
};
})(jQuery);
(function($) {
var foo1 = function(){
$(this).html('<b>hello</b>');
return this;
}
$.fn.ns = function () {
var self = this;
return {
foo1: function () {
return foo1.apply(self, arguments);
}
}
};
})(jQuery);