使用javascript/jQuery实现多路切换的最佳方式是什么?
What is the best way to implement multiway toggle using javascript/jQuery?
我有一个div,可以显示3个图像(在背景中)每个指示一些变量的'状态':即部分,完整和无。对于每一种状态,我都有图片:part .gif, full.gif和none.gif(也就是说,这些是那个div的背景图片)
需要:循环队列的切换效果,以改变这个顺序的图像partial -> full -> none -> partial
因此,如果当前图像为'partial.gif',用户单击div,则背景图像更改为序列中的下一个,即full.gif(如果它当前为full.gif,则更改为none.gif,然后更改为partial.gif,依此类推)。
幼稚的解决方案:有一堆if/else或开关情况,检查当前一个(图像),然后根据数组查找决定哪一个是下一个。这是最好的方法吗?我可以利用jQuery的toggle函数吗?
(PS:它不需要局限于图像,但也可以是不同的背景颜色序列等,我想知道这是一个很好的"通用"的方式,即,这个例子可能是特定于背景图像,但如果我改变了一部分的背景颜色或字体的代码,它应该仍然工作。我不希望它是纯通用的,但只是足够容易修改其他属性。如果没有,也没关系。只是一个想法:)
http://api.jquery.com/toggle-event/
确切地说http://api.jquery.com/toggle-event/#example-0这正是你想要的…
$("#div1").toggle(
function() {
$(this).css("background-image","url(full.png)")
},
function() {
$(this).css("background-image","url()")
},
function() {
$(this).css("background-image","url(partial.png)")
}
});
fn。从jQuery中删除
这里是相关的文章
- 哪里有fn。toggle(handler(eventObject), handler(eventObject)…)消失了吗?
- jquery更新后按钮停止工作
只要它是基于css的解决方案(您只需切换类),您就可以这样做(未经测试的代码):
$('#element').click(function() {
// get current css class value.
var class = $(this).attr('class');
// determine/increment number.
var nextNumber = parseInt(class.charAt(class.length - 1)) + 1;
// if too high, reset to first one.
if (nextNumber > 3) {
nextNumber = 1;
}
// remove old class and add new class.
$(this).removeClass(class).addClass('my_class' + nextNumber);
});
这里假设一次只有一个CSS类应用于元素。但如果不是这样,我相信你可以找到一个变通/调整。
这是足够通用的,你可以交换你的CSS类定义,而不影响脚本的功能。
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 为react组件传递道具的最佳方式
- 让Webpack管理Quirky AMD定义的最佳方式
- 在承诺链中处理早期回报的最佳方式
- 在ng重复循环中显示条件内容的最佳方式是什么
- 在phonegap中为android调用onload函数的最佳方式
- 链接两个网页或网络应用程序的最佳方式
- 什么's是连接供应商js文件的最佳方式
- 什么's是在javascript中迭代项的最佳方式
- 在node.js中编写单元测试的最佳方式是什么
- 在页面上记录数据并实现pushstate()的最佳方式
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- 什么'这是加载jQuery的最佳方式
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- 在网站上显示.mov作为加载屏幕的最佳方式
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 以角度渲染表中数据的最佳方式
- 删除集合中旧邮件/帖子的最佳方式
- 显示全屏Ajax加载程序的最佳方式
- PHP和JS中表单验证的最佳方式