我正在尝试学习jQuery,并制作了以下jsFiddle:
想法是在点击时改变div的颜色。好吧,我知道了,但我想知道是否有办法让div的颜色通过多个类更改来改变,可能是某种数组或循环。让我解释一下。
我创建了几个类似的类:
.color1 {..}
.color2 {..}
.color3 {..}
.color4 {..}
.color5 {..}
.color6 {..}
我想知道我们是否可以做类似
的事情addClass("color" + i)
我可以通过1 - 6循环播放。
有没有办法实现这个目标?谢谢你的帮助。
答案 0 :(得分:3)
这是考虑全局javascript命名空间危险的好地方。这是一个利用闭包来避免使用jquery的简单示例:
$(function() {
var numb = 1;
// this bit of managing the color state swap is another topic for discussion, so keeping it simple
var colors_len = 6;
$("div").click(function() {
// this closure has access to the numb variable
if (numb < colors_len) {
numb++;
$(this).addClass("color" + numb);
$(this).removeClass("color" + (numb-1));
} else {
numb = 1;
$(this).removeClass("color" + colors_len);
$(this).addClass("color" + numb);
}
});
});
PS。 Jquery ui也有一个交换类方法,但更适用于动画
答案 1 :(得分:2)
在我看来,最简单的方法是将颜色编号存储在jQuery的方便data()
中,然后从中增加颜色编号:
function fnClick() {
var numb = $(this).data('color') || 2;
$(this).addClass("color" + numb).data('color', ++numb)
}
使其返回到最后一种颜色之后的第一种颜色
function fnClick() {
var numb = $(this).data('color') || 2;
numb = numb == 7 ? 1 : numb;
$(this).removeClass().addClass("color" + numb).data('color', ++numb)
}
答案 2 :(得分:2)
如何使用随机数为div提供随机颜色。
var classCount = 6;
$(document).ready(function () {
$("div").on("click", fnClick);
});
function fnClick(e) {
// Get the currently clicked element
var $this = $(e.target),
className = 'color' + Math.floor((Math.random() * classCount )+1);
// Remove the exixting class/s
$this.removeClass();
// Add the class
$this.addClass(className);
}
<强> Check Fiddle 强>