如何使用'这'在jQuery插件回调中
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:
调用callback()
:时将this
传回
(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");
}
});
这是一把正在工作的小提琴。
相关文章:
- bookmarklet中的jQuery.getScript()进行回调,但没有成功执行插件
- 从多线程C++插件回调NodeJS Javascript函数
- 我的插件不适用于不同的回调
- Cordova Android短信插件不会触发成功或错误回调
- 自定义Cordova插件,释放一个保持回调而不调用它
- jQuery插件回调函数参数
- 如何向jquery插件添加自定义回调
- jQuery插件的自定义事件与回调
- jQuery插件回调-jQuery Boilerplate
- spawn() 函数的“关闭”回调在 grunt 插件中不起作用
- Requirejs:dist 失败,加载器插件没有在构建:文本中调用加载回调
- 编校器:访问插件中的回调
- PhoneGap 3.0.0 Tanelih 蓝牙插件在 Android 上已启用错误回调不起作用
- jQuery插件:回调选项必须返回false(不起作用)
- 如何使用'这'在jQuery插件回调中
- jquery插件回调以重置默认选项
- Phonegap插件回调在iOS版本中不会触发
- 第二次插件调用后收到的Cordova插件回调
- jQuery插件回调$this不能返回元素
- JQuery 插件 - 回调会破坏其他功能