如何禁用easyui中linkbutton的click事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁用easyui中linkbutton的click事件相关的知识,希望对你有一定的参考价值。

linkbutton禁用只能禁用样式,不能禁用click事件。
$('#btn').linkbutton('disable');
解决方法:
第一种方法:
juqery unbind方法
第二种方法:
判断下disable属性 $('#btn').linkbutton('disable');
$('#btn').click(function ()
if ($(this).linkbutton('options').disabled == false)
alert('a')

);
第三种方法:
拓展:
function setDisabled(target, disabled)
var state = $.data(target, "linkbutton");
if (disabled)
state.options.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;

//事件处理
var events = $(target).data("events");
if(events)
var clicks = events.click;//暂时只处理click事件
state.events = state.events||[];
$.extend(state.events, clicks);
$(target).unbind("click");

$(target).addClass("l-btn-disabled");
else
state.options.disabled = false;
if (state.href)
$(target).attr("href", state.href);

if (state.onclick)
target.onclick = state.onclick;

if (state.events)
for ( var i=0;i<state.events.length;i++)
$(target).bind(state.events[i].type,state.events[i].handler);


$(target).removeClass("l-btn-disabled");

;
参考技术A 查看linkbutton的源码,发现按钮失效时,只处理了href属性和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);




转 http://blog.csdn.net/rainxie_/article/details/52766813

在easyui datagrid中formatter数据后使用linkbutton

http://ntzrj513.blog.163.com/blog/static/2794561220139245411997/


  formatter:function(value,rowData,rowIndex){	if(value==""||value==null){		return "未知";
     return rowData.cname+"<a class=‘easyui-linkbutton‘ data-options=\"iconCls:‘icon-user_green‘ plain:true \" href=‘javascript: void(0);‘>详细</a>";
效果:

技术分享

 onLoadSuccess事件是在datagrid加载数据完成后的事件,相当于datagrid的回调函数,这里的加载数据完成不是指从远程或本地获得数据完成,而是在获取数据并解析完成datagrid,包括已经完成所有columns中的formatter属性,因此可以在onLoadSuccess事件中解析linkbutton组件。
columns属性中格式化数据:
formatter:function(value,rowData,rowIndex){ 
 if(value==""||value==null){
		     return "未知";
 	}else{
 		return rowData.cname+"<a class=‘loan_ct_view_button‘ href=‘javascript: void(0);‘>详细</a>"; 
 }
 }
 
 
    onLoadSuccess:function(data){ $(".loan_ct_view_button").linkbutton({ text:‘详细‘, plain:true, iconCls:‘icon-user_green‘ });
 
 

以上是关于如何禁用easyui中linkbutton的click事件的主要内容,如果未能解决你的问题,请参考以下文章

easyui中a标签设置禁用和不禁用

在easyui datagrid中formatter数据后使用linkbutton

easyui-linkbutton 设置和获取text文本

雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建链接按钮

Easyui系列之Menu(菜单)与 Button(按钮)

雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建链接按钮(Link Button)