easyui 解决easyui-linkbutton禁用后还可以触发事件

发布时间:2019-06-07 21:44:54

/**

 * linkbutton方法扩展

 * @param {Object} jq

 */

$.extend($.fn.linkbutton.methods, {

    /**

     * 激活选项(覆盖重写)

     * @param {Object} jq

     */

    enable: function(jq){

        return jq.each(function(){

            var state = $.data(this, 'linkbutton');

            if ($(this).hasClass('l-btn-disabled')) {

                var itemData = state._eventsStore;

                //恢复超链接

                if (itemData.href) {

                    $(this).attr("href", itemData.href);

                }

                //回复点击事件

                if (itemData.onclicks) {

                    for (var j = 0; j < itemData.onclicks.length; j++) {

                        $(this).bind('click', itemData.onclicks[j]);

                    }

                }

                //设置target为null,清空存储的事件处理程序

                itemData.target = null;

                itemData.onclicks = [];

                $(this).removeClass('l-btn-disabled');

            }

        });

    },

    /**

     * 禁用选项(覆盖重写)

     * @param {Object} jq

     */

    disable: function(jq){

        return jq.each(function(){

            var state = $.data(this, 'linkbutton');

            if (!state._eventsStore)

                state._eventsStore = {};

            if (!$(this).hasClass('l-btn-disabled')) {

                var eventsStore = {};

                eventsStore.target = this;

                eventsStore.onclicks = [];

                //处理超链接

                var strHref = $(this).attr("href");

                if (strHref) {

                    eventsStore.href = strHref;

                    $(this).attr("href", "javascript:void(0)");

                }

                //处理直接耦合绑定到onclick属性上的事件

                var onclickStr = $(this).attr("onclick");

                if (onclickStr && onclickStr != "") {

                    eventsStore.onclicks[eventsStore.onclicks.length] = new Function(onclickStr);

                    $(this).attr("onclick", "");

                }

                //处理使用jquery绑定的事件

                var eventDatas = $(this).data("events") || $._data(this, 'events');

                if (eventDatas["click"]) {

                    var eventData = eventDatas["click"];

                    for (var i = 0; i < eventData.length; i++) {

                        if (eventData[i].namespace != "menu") {

                            eventsStore.onclicks[eventsStore.onclicks.length] = eventData[i]["handler"];

                            $(this).unbind('click', eventData[i]["handler"]);

                            i--;

                        }

                    }

                }

                state._eventsStore = eventsStore;

                $(this).addClass('l-btn-disabled');

            }

        });

    }

});



Card image cap
APP STORE
Card image cap
应用宝
Card image cap
小米
Card image cap
华为