簡體   English   中英

如何在jQuery插件回調中使用'this'?

[英]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);

選項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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM