jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery:调用后更改插件选项大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在使用 jquery-ui对话框时,我自己设置了一个插件来设置一些东西.而不是打电话:

$("#popup").dialog(options);

用这个

$("#popup").dialogPlugin(options);

而dialogPlugin将调用.dialog(选项)(做完一些事后).

在我的插件中,我可以修改对话框事件的一些函数,如下所示:

var originalCloseFn = options.close;
options.close = function() {
    //my own stuff.
    originalCloseFn();
};

插件工作得很好,但经过一段时间使用它后,我意识到我无法从插件外部更改对话框功能,如下所示:

$("#popup").dialog("option","close",newFunctionOnClosE);

如果我这样做,插件添加到close函数代码将丢失.

所以我在插件的开头添加了这段代码

if (options == "option") {
    if (val == undefined)
        return _this.dialog("option",Name);
    else
        return _this.dialog("option",name,val);
}

现在我需要更改此代码第五行以实际更改我的插件的选项,而不是jquery-ui. (.dialogPlugin函数的选项,而不是.dialog的选项).我真的不知道我该怎么做.有什么想法吗?

编辑

我知道这个问题不是很清楚,我的英语不好让我不再解释自己,所以我做了一个小问题example.

我想要的是在第七行(返回$(this).dialog(“option”,val);)而不是修改(相当于optionsForJquery.closE)修改options.close.这样我就会避免破坏插件的行为.

解决方法

试试这个:

HTML:

<div id="popup">I'm a popup</div>

JS:

(function ($) {
    $.fn.dialogPlugin = function (options,val) {

        var
            // setter function close
            fnClose = null,// function when close
            fnMyClose = function() {
                alert("This is plugin's close behavior");
                if (fnClosE)
                    fnClose();
            };

        if (options == "option") {
            if (name == "close" && $.isFunction(val)) {
                fnClose = val;
                val = fnMyClose;
            }
        } 
        else {
            if (options.closE)
                fnClose = options.close;

            options.close = fnMyClose;
        }

        return (Name)
            ? $(this).dialog(options,val) //if var == 'undefined'is equal to not send parameters
            : $(this).dialog(options);
    };

})(jQuery);


$("#popup").dialogPlugin({
    close: function() {
        alert("This is user's first close behavior");
    }
});


$("#popup").dialogPlugin("option",function() {
    alert("This is user's second close behavior");
});

编辑

或更简单优雅:

(function($){

    var dialog_close = $.ui.dialog.prototype.close;

    $.ui.dialog.prototype.close = function() {

        var self = this;

        alert("This is plugin's close behavior");

        dialog_close.apply(this,arguments);


    };

})(jQuery);
@H_419_77@

大佬总结

以上是大佬教程为你收集整理的jQuery:调用后更改插件选项全部内容,希望文章能够帮你解决jQuery:调用后更改插件选项所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。