我不知道如何在jQuery插件中调用该函数。 我想尝试做一些像社交分享者一样小的东西,这将是我的第一个插件,但我很困惑。
Uncaught TypeError: Object [object Object] has no method '_echoCookie'
这就是它的作用......
function EchoSoc(element, options) {
this.element = element;
this.options = $.extend({}, defaults, options);
this._defaults = defaults;
this._name = pluginName;
this.init();
}
之后我们将一些内容放入init: function () { }
,例如:
$('body').append( //-->
'<div id="fb-root" />'
+ '<script>(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return;js = d.createElement(s); js.id = id;js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";fjs.parentNode.insertBefore(js, fjs);}(document, "script", "facebook-jssdk"));</script>'
+ '<script src="//platform.twitter.com/widgets.js"></script>'
+ '<script src="//apis.google.com/js/plusone.js"></script>'
// <--
);
因为这是谷歌作为样本的测试,这是最后一篇文章:
$('.echoGoogle').append('<g:plusone size="medium" href="' + this.options.google_url + '" callback="googleCB"></g:plusone>');
然后我们有这些功能:
_echoEvents: function () {
googleCB = function() {
this._echoCookie();
};
},
_echoCookie: function () {
$.cookie('echoSoc', 'done', { expires: 30, path: '/' });
console.log('cookie added');
}
但这根本行不通......
_echoEvents: function () {
googleCB = function() {
this._echoCookie();
};
}
我的问题是如何在init ... this._functionName();以下的其他函数中调用该函数。只适用于init而不是它下面的函数。 提前致谢。
答案 0 :(得分:1)
应该如下所示,因为当您在_echoCookie
中调用_echoEvents
时,this
变量可能指向不同的上下文。因此,使用闭包变量来保存对主对象的引用,并在googleCB
_echoEvents: function () {
var that = this;
googleCB = function() {
that._echoCookie();
};
},
_echoCookie: function () {
$.cookie('echoSoc', 'done', { expires: 30, path: '/' });
console.log('cookie added');
}