2016-10-07 17 views
0

我有2个不同的CSS类的链接。 每次用户点击时如何在两者之间切换?每次用户点击切换CSS类 - jquery

<a class="class1" id="class1">Class1</a> 
<a class="class2" id="class2">Class2</a> 

这只是工作的一个时间,但是当我点击第二次,这是行不通的:

$("#class1").click(function(){ 
    $("#class1").removeClass().addClass("class2"); 
    $("#class2").removeClass().addClass("class1"); 
}) 

$("#class2").click(function(){ 
    $("#class1").removeClass().addClass("class2"); 
    $("#class2").removeClass().addClass("class1"); 
}) 

的CSS是改变颜色

+2

尝试使用toggleClass和preventDefault动作的标记。 – kamesh

+0

什么意思preventDefault action? – Stfvns

+0

你没有指定要删除哪个类 - 但是如果你添加/删除一个类,可以使用@kamesh建议的'toggleClass(...)',即'$(“#class1”)。toggleClass(“ class2“);' – ochi

回答

2

的方法都在做同样的事情。你为每个标签设置了相同的类,这就是为什么它只能在第一次使用。第二次它重新设置当前班级。 他们不应该像这样吗?

$("#class1").click(function(){ 
    $("#class1").removeClass().addClass("class2"); 
    $("#class2").removeClass().addClass("class1"); 
}) 

$("#class2").click(function(){ 
    $("#class1").removeClass().addClass("class1"); 
    $("#class2").removeClass().addClass("class2"); 
}) 
+0

yess。这是答案只是改变一点我的代码! – Stfvns

2

您可以使用toggleClass来切换多个类..

$('.red,.blue').click(function() { 
 
    $(this).toggleClass('red blue'); 
 
});
.red { background-color:red } 
 
.blue { background-color:blue }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="red">One</div> 
 
<div class="blue">Blue</div>

1

您可以使用选择器"[class^=class]"选择其中Element.className以“class”开头的元素;使用参数0, -1.slice()选择字符串中的字符直到最后一个字符;检查最后一个字符是否为12使用==等号运算符;设置相反的最后一个字符匹配1"2"2"1"Element.className

$("[class^=class]").click(function() { 
 
    var c = this.className; 
 
    this.className = c.slice(0, -1) + (c[c.length - 1] == 1 ? 2 : 1);  
 
});
.class1 { 
 
    color: blue; 
 
} 
 

 
.class2 { 
 
    color: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a class="class1" id="class1">Class1</a> 
 
<a class="class2" id="clas2">Class2</a>

+0

overkill :) hehe – Sherlock

+0

最佳答案... +1为你回答 – kamesh

0

最后一个字符,当您单击class1一次,它从class1删除类class1,并提出class2上。

但是,当您再次单击它时,因为class1设置为类class2,它不会更改。

你或许应该做这样的事情:

var class1check = 0; 
$("#class1").click(function() { 
    if (class1check === 0) { 
     var addclass1 = "class2"; 
     var addclass2 = "class1"; 
    } 
    else { 
     var addclass1 = "class1"; 
     var addclass2 = "class2"; 
     class1check = 0; 
    } 
    $("#class1").removeClass().addClass(addclass1); 
    $("#class2").removeClass().addClass(addclass2); 
}); 
1

完成使用toggleClass的jsfiddle:https://jsfiddle.net/kameeshwaran/5puecqeq/

HTML:

<a class="class1" id="class1">Class1</a> 
<a class="class1" id="class2">Class2</a> 

JS

$(document).ready(function(){ 
    $(".class1").click(function(e){ 
     e.preventDefault(); 
     $(this).toggleClass("class2") 
    }); 
}); 

CSS:

.class1{ 
    background-color:green; 
} 
.class2{ 
    background-color:red; 
} 
+0

我认为@stfvns试图翻转在两个元素上使用的类,而不仅仅是一个 – Timmah