切换按钮状态
Toggling Button States
我正试图在我正在开发的程序中实现切换功能。具体来说,当用户单击按钮时,有三种可能的情况。
- 当前没有其他工具处于活动状态时单击了工具
- 在另一个工具当前处于活动状态时单击了该工具
- 单击相同的工具以打开/关闭它
我在实现这一点时遇到了困难。这是我到目前为止的代码:
var toolState = {
img_draw_point: false,
img_draw_line: false,
img_draw_rectangle: false,
img_draw_ellipse: false,
img_draw_FreehandPolygon: false,
img_draw_FreehandPolyline: false,
img_draw_text: false,
img_draw_eraser: false,
};
var lastActiveTool;
on(dom.byId("div-tools-draw"), "click", function (evt) {
function disableActiveCSS() {
for (var property in toolState) {
$("img#" + property + ".k-button.single").removeClass("buttonSelected");
$("img#" + property + ".k-button.single").removeClass("buttonHoverState");
}
}
function enableCSS() {
$("img#" + evt.target.id + ".k-button.single").addClass("buttonSelected");
$("img#" + evt.target.id + ".k-button.single").addClass("buttonHoverState");
}
toolState[evt.target.id] = !toolState[evt.target.id];
if (toolState[evt.target.id] == toolState[lastActiveTool]) {
toolState[lastActiveTool] = false;
}
disableActiveCSS();
enableCSS();
if (evt.target.id == lastActiveTool) {
disableActiveCSS();
}
}
如有任何帮助,我们将不胜感激。
我看到您的代码包含'$'表示法,所以我在响应中使用了jQuery。它还假设我们只关心另一个工具当前是否"打开"。因此,我的回答中的3个选项是:
- 如果没有打开任何工具,请打开选定的工具
- 关闭当前工具并打开选定的工具
- 如果当前工具处于打开状态,请将其关闭
var lastActiveTool = false;
$.click("#div-tools-draw", function(evt) {
// Disable Active CSS
$("img.k-button.single").removeClass("buttonSelected").removeClass("buttonHoverState");
if (!lastActiveTool) {
activateTool(evt.target.id);
} else if (evt.target.id == lastActiveTool) {
sameToolToggle(evt.target.id);
} else {
otherToolToggle(evt.target.id);
}
};
var activateTool = function (id) {
$("img#" + id + ".k-button.single").addClass("buttonSelected")addClass("buttonHoverState");
lastActiveTool = evt.target.id;
};
var otherToolToggle = function(id) {
$("img#" + id + ".k-button.single").addClass("buttonSelected")addClass("buttonHoverState");
lastActiveTool = evt.target.id;
// Whatever else you need to do to toggle between tools
}
// Only gets called when the same tool is currently toggled ON
var sameToolToggle = function(id) {
lastActiveTool = false;
}
相关文章:
- iOS 中的按钮触摸状态
- 使用按钮和媒体查询切换显示状态
- 带有嵌套状态的Angular ui路由器和后退按钮
- ReactJS:使用浏览器按钮导航时保存状态
- MVC和JQuery Mobile:单选按钮在发布时释放状态
- 制作一个按钮倒计时计时器,该计时器将在5分钟后永久禁用,即使在页面刷新时也应保持禁用状态
- 如何知道鼠标按钮的当前状态(mouseup状态或mousedown状态)
- 如何使用Javascript检查当前鼠标按钮状态
- 如何重置剑道MVVM单选按钮's已检查状态
- 按钮处于活动状态,焦点无法在Mac FireFox上工作
- 美国地图插件,具有状态数据/悬停功能的新按钮
- 在单击按钮时激活按钮的悬停状态,直到单击另一个按钮(Javascript/JQuery)
- 重置按钮在 jQuery 中的单击状态
- 如何使按钮具有 :活动状态 1 秒
- 按钮未启用,如果复选框处于打开状态
- 引导有状态按钮未按预期工作
- 如何使用 removeClass 解决状态按钮中的 jquery ui / firefox 错误
- 当AJAX调用完成时重置Bootstrap加载状态按钮
- 多个状态按钮-背景色
- 输入表单提交上的引导状态按钮