使用dojo或jquery禁用/启用可折叠面板上用作按钮的图像
Disable/Enable image used as button on collapsible panels with dojo or jquery
所以我有一个几年前有人编码的应用程序,它是以一种不太友好的方式完成的。基本上,页面中央有一个地图面板,右边是选项卡式面板,每个面板都有不同的搜索选项。没有使用Dijit,每个面板上有两个按钮,一个用于展开,另一个用于关闭面板。按钮是图像,请参阅下面的代码:
<div align="center" title="Click to Close/Expand" style="background-image:url('images/headerBack.png'); height:30px;" >
<div style="position:relative; width:264px; margin-right:auto; margin-left:auto; height:100%;">
<img src='./images/titleLayerControl.png' dojoAttachEvent="onclick:toggleShowHide" style="position:absolute; top:6px; left:0px; cursor:pointer;"/>
<input type="image" id="close" dojoAttachEvent="onclick:hideWidget" style="position:absolute; top:12px; left:53px;" alt="Close" title="Close" src="./images/minusUp.png" onmouseout="this.src='./images/minusUp.png';" onmouseover="this.src='./images/minusOver.png';"/>
<input type="image" id="expand" dojoAttachEvent="onclick:showWidget" style="position:absolute; top:12px; left:195px;" alt="Expand" title="Expand" src="./images/addUp.png" onmouseout="this.src='./images/addUp.png';" onmouseover="this.src='./images/addOver.png';"/>
</div>
</div>
这是按钮的代码。现在我有一个dojo文件,如下所示:
,disableCloseButton:function(){
$('#close').attr('disabled', 'disabled');
$("#close").attr("src", "./images/minusDisabled.png");
}
,enableCloseButton:function(){
$('#close').removeAttr('disabled');
$('#close').attr("src", "./images/minusUp.png")
}
,showWidget:function(){
dojo.style(this.contentNode.domNode,"visibility","visible");
dojo.style(this.contentNode.domNode,"display","block");
var d = this.expandedHeight;
if (ct.isNumber(d) === true){
var c = this.expandedHeight-this.collapsedHeight;
dojo.style(this.domNode,"height",d+"px");
dojo.style(this.contentNode.domNode,"height",c+"px");
} else {
dojo.style(this.domNode,"height",d);
dojo.style(this.contentNode.domNode,"height",d);
}
this.expanded = true;
this.showHook();
this.enableCloseButton();
}
,hideWidget:function(){//302697000
var d =this.collapsedHeight;
var c = 0;
dojo.style(this.contentNode.domNode,"visibility","hidden");
dojo.style(this.contentNode.domNode,"display","none");
dojo.style(this.domNode,"height",d+"px");
dojo.style(this.contentNode.domNode,"height",c+"px");
this.hideHook();
this.expanded = false;
this.disableCloseButton();
}
我想做的是当点击"关闭"按钮时禁用它,当点击"展开"按钮时启用"关闭"键并禁用"展开"按钮。正如你所看到的,我只有一个方法来显示Widget和一个方法去隐藏Widget。那么我该如何检查哪个面板上的按钮被点击了呢?是的,我知道jquery和dojo混合在一起,今天有几个人在攻击这个东西,它一团糟。
以下是我解决这个问题的方法。我在试图控制的按钮上添加了一个dojoAttachPoint。查看下面的代码:
<div class="headerBack" title="Click to Close/Expand"
>
<div class="test" >
<a
class="titleMyProperties"
dojoAttachEvent="onclick:toggleShowHide"
title="Close/Expand"></a>
<a
dojoAttachPoint="closeNode"
class="closeNode"
dojoAttachEvent="onclick:hideWidget"
title="Close"></a>
<a
dojoAttachPoint="expandNode"
class="expandNode"
dojoAttachEvent="onclick:showWidget"
alt="Expand"
title="Expand"></a>
</div>
</div>
接下来,我在widget.js文件中声明了attachpoint。然后我添加了一些函数来交换我修改指针的css类。我将这个网站切换为使用100%css精灵,因此不再需要在http调用中交换图像。
toggleShowHide: function(){
var e = this.expanded;
if(e){
this.hideWidget( );
this.disableButton( );
} else{
this.showWidget( );
this.enableButton( );
}
//this.expanded = !e;
},
//disable + and - buttons
disableButton: function(){
$(this.closeNode).addClass('closeNodeDisabled');
$(this.closeNode).removeClass('closeNode');
$(this.expandNode).addClass('expandNode');
$(this.expandNode).removeClass('expandNodeDisabled');
},
//enable + and - buttons
enableButton: function(){
$(this.closeNode).addClass('closeNode');
$(this.closeNode).removeClass('closeNodeDisabled');
$(this.expandNode).addClass('expandNodeDisabled');
$(this.expandNode).removeClass('expandNode');
},
CSS类如下:
.closeNode{background-image:url(../images/sprite.png);
width:12px;
height:12px;
background-position:-625px -166px;
display:inline;
left:53px;
top:12px;
background-repeat:no-repeat;
cursor:pointer;
position:absolute}
.closeNode:hover{
width:12px;
height:12px;
background-position:-906px -96px;
display:inline;
left:53px;
position:absolute;top:12px;
background-repeat:no-repeat;
cursor:pointer}
.closeNodeDisabled{background-image:url(../images/sprite.png);
width:12px;
height:12px;
background-position:-823px -98px;
display:inline;
left:53px;
position:absolute;
top:12px;
background-repeat:no-repeat;
cursor:default}
.expandNode{background-image:url(../images/sprite.png);
width:12px;
height:12px;
background-position:-835px -98px;
display:inline;
background-repeat:no-repeat;
left:195px;
position:absolute;
top:12px;
cursor:pointer}
.expandNode:hover{
width:12px;
height:12px;
background-position:-811px -98px;
display:inline;
background-repeat:no-repeat;
left:195px;
position:absolute;
top:12px;
cursor:pointer}
.expandNodeDisabled{background-image:url(../images/sprite.png);
width:12px;
height:12px;
background-position:-930px -96px;
display:inline;
background-repeat:no-repeat;
left:195px;
position:absolute;
top:12px;
cursor:default}
您是否尝试过使用dojo.connect作为事件侦听器?我想我已经正确地整理了启用/禁用功能:
var closeButton = dojo.byId('close');
var openButton = dojo.byId('open);
dojo.connect(closeButton, "onclick", function(evt){
openButton.set({'disabled':'false'});
closeButton.set({'disabled':'true'});
});
dojo.connect(openButton, "onclick", function(evt){
closeButton.set({'disabled':'false'});
openButton.set({'disabled':'true'});
});
相关文章:
- 如何使按钮图像在单击时添加到变量中
- HTML滚动按钮图像:如何使用Internet Explorer
- jquery ui按钮图像没有更改
- 如何检测长按按钮/图像
- 使用 Jquery 的单选按钮图像
- 如何在 jqgrid 中添加新的按钮/图像列
- Javascript,切换具有相同名称的单选按钮图像
- 我怎样才能使这个切换的javascript按钮(图像)不那么笨拙
- w2ui-单击时工具栏更改按钮图像
- Jquery在ajax上设置onclick null并更改按钮图像成功
- 如何更改HTML5音频中的播放/按钮图像
- 日期选择器按钮图像未显示
- jQuery是否验证冲突提交函数,而不是表单按钮(图像/超链接)
- 我需要添加一个图像数组,可以使用JavaScript更改按钮图像或数字条目
- 在firefox中创建自定义按钮(使用自定义按钮插件)不允许我调整按钮图像的大小
- 更改按钮图像onclick
- Angular JS知道什么是用复选框图像和单选按钮图像触发的
- 用按钮图像填充表单文本字段
- javascript表单提交更改提交按钮图像
- 从内联css和JavaScript点击更改按钮图像