我想创建一个使用命名空间的JQuery插件。这就是我尝试创建一个返回html的简单函数:
(function($) {
$.fn.ns = function () {
return {
foo1: function(){
var element = $(this);
$(element).html('<b>hello</b>');
return this;
}
}
};
})(jQuery);
因此命名空间应该被称为ns。
应填写这个简单的div:
<div class="sayHello"></div>
这样称呼它似乎不起作用:
$(".sayHello").ns().foo1();
我在这里做错了什么?
JSFiddle:http://jsfiddle.net/CVrFU/475/
答案 0 :(得分:0)
通过这种方式,必须有closure个元素。
(function($) {
$.fn.ns = function () {
var self = this,
element = $(this);
return {
foo1: function(){
$(element).html('<b>hello</b>');
return self;
}
}
};
})(jQuery);
为了保存this
还有一个很薄的方法,有几种方法:
(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);
通过这种方式,您不必总是重新创建函数,只在需要的上下文中运行它。
但是如果你想保存jQuery链接,你应该在fn对象中传递你的所有方法(在这个例子中是ns和foo1)。