解决easuyi的linkbutton在按钮失效时,还会触发jquery的click事件的问题。

来源:互联网 发布:淘宝人像摄影 编辑:程序博客网 时间:2024/05/16 05:39

查看linkbutton的源码,发现按钮失效时,只处理了href属性和onclick属性产生的事件。

function setDisabled(target, disabled){var state = $.data(target, 'linkbutton');var opts = state.options;$(target).removeClass('l-btn-disabled l-btn-plain-disabled');if (disabled){opts.disabled = true;var href = $(target).attr('href');if (href){state.href = href;$(target).attr('href', 'javascript:void(0)');}if (target.onclick){state.onclick = target.onclick;target.onclick = null;}opts.plain ? $(target).addClass('l-btn-disabled l-btn-plain-disabled') : $(target).addClass('l-btn-disabled');} else {opts.disabled = false;if (state.href) {$(target).attr('href', state.href);}if (state.onclick) {target.onclick = state.onclick;}}}


于是重写了linkbutton的disable和enable方法,使其不触发jquery的click事件(调用了jquery底层的事件对象,1.9版)

如果linkbutton在创建时就设了disable属性,扩展无用,因为这时会调用easuyi本身的失效方法。

    $.extend($.fn.linkbutton.methods, {        disable: function (jq, newposition) {            return jq.each(function () {                setDisabled(this, true);            });        },        enable: function (jq, newposition) {            return jq.each(function () {                setDisabled(this, false);            });        }    });    function setDisabled(target, disabled) {        var state = $.data(target, 'linkbutton');        var opts = state.options;        $(target).removeClass('l-btn-disabled l-btn-plain-disabled');        if (disabled) {            opts.disabled = true;            var href = $(target).attr('href');            if (href) {                state.href = href;                $(target).attr('href', 'javascript:void(0)');            }            if (target.onclick) {                state.onclick = target.onclick;                target.onclick = null;            }            if ($._data(target).events && $._data(target).events.click) {                state.jclick = $._data(target).events.click.map(function (r) {                    return { namespace: r.namespace, handler: r.handler };                });                $(target).unbind('click');            }            opts.plain ? $(target).addClass('l-btn-disabled l-btn-plain-disabled') : $(target).addClass('l-btn-disabled');        } else {            opts.disabled = false;            if (state.href) {                $(target).attr('href', state.href);            }            if (state.onclick) {                target.onclick = state.onclick;            }            if (state.jclick)                for (var i = 0; i < state.jclick.length; i++) {                    var click = state.jclick[i];                    $(target).bind('click' + (click.namespace ? '.' + click.namespace : ''), click.handler);                }        }    }



0 0
原创粉丝点击