如何按顺序使用jQuery事件

时间:2013-12-04 00:15:04

标签: javascript jquery

我正在尝试学习jQuery,并制作了以下jsFiddle:

http://jsfiddle.net/jkNK3/

想法是在点击时改变div的颜色。好吧,我知道了,但我想知道是否有办法让div的颜色通过多个类更改来改变,可能是某种数组或循环。让我解释一下。

我创建了几个类似的类:

.color1 {..}
.color2 {..}
.color3 {..}
.color4 {..}
.color5 {..}
.color6 {..}

我想知道我们是否可以做类似

的事情
addClass("color" + i)

我可以通过1 - 6循环播放。

有没有办法实现这个目标?谢谢你的帮助。

3 个答案:

答案 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);
        }
    });
});

http://jsfiddle.net/2taH5/

PS。 Jquery ui也有一个交换类方法,但更适用于动画

答案 1 :(得分:2)

在我看来,最简单的方法是将颜色编号存储在jQuery的方便data()中,然后从中增加颜色编号:

function fnClick() {
    var numb = $(this).data('color') || 2;
    $(this).addClass("color" + numb).data('color', ++numb)
}

FIDDLE

使其返回到最后一种颜色之后的第一种颜色

function fnClick() {
    var numb = $(this).data('color') || 2;
    numb = numb == 7 ? 1 : numb;
    $(this).removeClass().addClass("color" + numb).data('color', ++numb)
}

FIDDLE

答案 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