[英]How to use 'this' in jQuery plugin callback?
目前我正在創建一個jQuery插件。
使用回調時我遇到了問題。
$.fn.bondye = function (options) {
var settings = $.extend({
callback: function () {}
}, options);
return this.each(function () {
$(this).addClass('test');
settings.callback();
});
};
$(".myDiv").bondye({
callback: function () {
$(this).removeClass("test");
}
});
jsFiddle示例: http : //jsfiddle.net/HEJtm/1/
但我不能在回調中對div做任何事情。
我使用http://learn.jquery.com/plugins/advanced-plugin-concepts/來學習開發jQuery插件,但我找不到任何關於回調的信息。
您需要為回調設置上下文。 你可以使用call
:
settings.callback.call(this);
將其調用為
settings.callback.call(this);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call
選項1:
通過this
,當你調用回callback()
(function ($) {
$.fn.bondye = function (options) {
var settings = $.extend({
callback: function () {}
}, options);
return this.each(function () {
$(this).addClass('test');
// Pass "this" back here:
settings.callback(this);
});
};
})(jQuery);
$(".myDiv").bondye({
callback: function (obj) {
$(obj).removeClass("test");
}
});
這是一個工作小提琴 。
選項2 :(首選)
(function ($) {
$.fn.bondye = function (options) {
var settings = $.extend({
callback: function () {}
}, options);
return this.each(function () {
$(this).addClass('test');
settings.callback.call(this);
settings.callback();
});
};
})(jQuery);
$(".myDiv").bondye({
callback: function () {
$(this).removeClass("test");
}
});
這是一個工作小提琴 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.