如何切换'单击JQuery页面上的多个元素?

时间:2014-05-13 08:19:29

标签: javascript jquery html css

假设我的页面上有10个红色,并且它们有相同的类别,称为“#mys;'。

这就是我想要的: 单击一个元素,然后单击一个元素将其颜色更改为绿色。

我做了什么:

<script>
    $(document).ready(function(){
        $('.myspan').click(function(){
            aaa = !aaa;
            if(aaa){
                $(this).css('color','green');
            } else {
                $(this).css('color','red');         
}
    });
})
</script>

这个有效!它几乎实现了我想要的。当我单击一个元素时,它会成功变为绿色。但我必须点击两次以获得另一个红色元素才能使其变为绿色。我希望你们知道我的意思,如果你看代码。有没有人知道如何解决这个问题?

5 个答案:

答案 0 :(得分:4)

您可以改用.toggleClass()。试试这个:

 $(".myspan").click(function () {
  $(this).toggleClass("red");
 });

CSS:

 .myspan{ color: green; }
 .myspan.red{ color: red; }

<强> Working Demo

答案 1 :(得分:1)

你需要分别为每个跨度设置一个状态,而不是使用公共变量,你可以使用.data()api,如

$(document).ready(function () {
    $('.myspan').click(function () {
        var $this = $(this),
            aaa = $this.data('aaa');
        aaa = !aaa;
        $this.css('color', function () {
            return aaa ? 'green' : 'red';
        })
        $this.data('aaa', aaa);
    });
})

演示:Fiddle

答案 2 :(得分:1)

我不会使用任何变量,只要你的脚本函数说的那么简单。最好这样试试:

使用Javascript:

$(document).ready(function () {
    $('.myspan').click(function () {
        if ($(this).hasClass('color-red')) {
            $(this).removeClass('color-red').addClass('color-green');
        } else {
            $(this).removeClass('color-green').addClass('color-red');
        }
    });
})

CSS:

.myspan {
}
.color-red {
    color:red;
}
.color-green {
    color:green;
}

工作小提琴:http://jsfiddle.net/2729p/

这节省了使用状态保存变量的需要,并使其更加模块化。

答案 3 :(得分:0)

尝试以下代码

<script>
    $(document).ready(function(){
        $('.myspan').click(function(){
            var colorVal = $(this).css('color');
            if(colorVal === 'red'){
                $(this).css('color','green');
            } else {
                $(this).css('color','red');         
}
    });
})
</script>

答案 4 :(得分:0)

最好使用toggleClass

<span class="myspan">Test</span>

JQuery的:

$('.myspan').click(function () {
    $(this).toggleClass("green");
});

CSS:

.myspan{
    color: red;
}
.green {
    color: green
}

Example