学习--jquery 自定义插件 面向对象 -- 模拟 jquery EasyUi的 自定义 alert + confirm

本文介绍如何使用jQuery创建面向对象的自定义插件,通过模仿EasyUI的alert和confirm对话框,探讨jQuery插件开发与面向对象编程的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(function ($) {

    /**
     * 窗口外框
     * @returns {*}
     */
    function my_window() {
        var win = $('<div class="m-layer z-display"></div>').appendTo('body');
        return win;
    };

    function my_table() {
        var table = $('<table></table>');
        return table;
    };

    function my_tr() {
        var tr = $('<tr></tr>');
        return tr;
    };

    function my_td() {
        var td = $('<td></td>');
        return td;
    };

    function my_lywrap() {
        var div = $('<div class="lywrap"></div>');
        return div;
    };

    /**
     * 标题
     * @returns {*}
     */
    function my_title(text) {
        var lytt = $('<div class="lytt"></div>');
        var title = $('<h2 class="clx-font-bold clx-article-fontColor clx-font-xl">标题</h2>').appendTo(lytt);
        title.html(text);
        return lytt
    };

    function my_lyct(text) {
        var lyct = $('<div class="lyct"></div>');
        lyct.html(text);
        return lyct;
    };

    /**
     * 文本内容
     * @returns {*}
     */
    function my_content(text) {
        var content = $('<p class="warring-text">确定要执行此操作?</p>');
        content.html(text);
        return content;
    };

    /**
     * 关闭 X 按钮
     * @returns {*}
     */
    function my_close() {
        var close = $('<span class="lyclose">×</span>');
        close.click(function () {
            $('body').css({overflow: ''});
            $('body > div.z-show').remove();
        });
        return close;
    };

    /**
     * 按钮区域组
     * @returns {*}
     */
    function my_lybt() {
        var lybt = $('<div class="lybt"></div>');
        return lybt;
    };

    /**
     * 按钮区域组
     * @returns {*}
     */
    function my_buttonGroup() {
        var group = $('<div class="check-btn-group"></div>');
        return group;
    };

    /**
     * 确定按钮
     * @returns {*}
     */
    function my_ok(callback) {
        var ok = $('<a class="clx-sure-btn">确定</a>');
        ok.click(function () {
            if (callback) {
                callback(true);
            }
            my_close().click();
        });
        return ok;
    };

    /**
     * 取消按钮
     * @returns {*}
     */
    function my_cancel(callback) {
        var cancel = $('<a class="clx-default-btn">取消</a>');
        cancel.click(function () {
            if (callback) {
                callback(false);
            }
            my_close().click();
        });
        return cancel;
    };

    /**
     * $.messager 相当于定义一个java的 类对象
     * $.messager.alert,$.messager.confirm 相当于 类中的方法
     *
     * @param options
     * @returns {boolean}
     */
    $.messager = {
        alert: function (tt, message) {
            // 动态拼接模块
            var win = my_window();
            var table = my_table().appendTo(win);
            var table_tr = my_tr().appendTo(table);
            var table_tr_td = my_td().appendTo(table_tr);
            var table_tr_td_lywrap = my_lywrap().appendTo(table_tr_td);
            var table_tr_td_lywrap_title = my_title(tt).appendTo(table_tr_td_lywrap);
            my_lyct(message).appendTo(table_tr_td_lywrap);
            my_close().appendTo(table_tr_td_lywrap_title);
            win.removeClass('z-display').addClass('m-layer z-show');
            $('body').css({overflow: 'hidden'});
        },
        confirm: function (tt, message, callBack) {
            // 动态拼接模块
            var win = my_window();
            var table = my_table().appendTo(win);
            var table_tr = my_tr().appendTo(table);
            var table_tr_td = my_td().appendTo(table_tr);
            var table_tr_td_lywrap = my_lywrap().appendTo(table_tr_td);
            var table_tr_td_lywrap_title = my_title(tt).appendTo(table_tr_td_lywrap);
            var table_tr_td_lywrap_lyct = my_lyct(my_content(message)).appendTo(table_tr_td_lywrap);
            var table_tr_td_lywrap_lybt = my_lybt().appendTo(table_tr_td_lywrap);
            var table_tr_td_lywrap_lybt_buttonGroup = my_buttonGroup().appendTo(table_tr_td_lywrap_lybt);
            my_close().appendTo(table_tr_td_lywrap_title);
            my_ok(callBack).appendTo(table_tr_td_lywrap_lybt_buttonGroup);
            my_cancel(callBack).appendTo(table_tr_td_lywrap_lybt_buttonGroup);
            win.removeClass('z-display').addClass('m-layer z-show');
            $('body').css({overflow: 'hidden'});
        }
    };
    // 类对象的扩展属性
    $.messager.defaults = {ok: "Ok", cancel: "Cancel"};
})(jQuery);

/**
 * 调用方法
 */
$(function () {
    $('#alert').click(function () {
        $.messager.alert("操作提示", "您确定要执行操作吗?");
    });
    $('#confirm').click(function () {
        $.messager.confirm("操作提示", "您确定要执行操作吗?", function (data) {
            if (data) {
                alert("确定");
            }
            else {
                alert("取消");
            }
        });
    });
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值