Ste*_*fin 208 jquery toggleclass
如果我有类.A和类.B并想在按钮单击之间切换,那么在jQuery中有什么好的解决方案?我还是不明白是怎么toggleClass()
运作的.
是否有内联解决方案将其置于onclick=""
事件中?
Fré*_*idi 480
如果你的元素A
从一开始就暴露了类,你可以写:
$(element).toggleClass("A B");
Run Code Online (Sandbox Code Playgroud)
这将删除类A
并添加类B
.如果你再次这样做,它将删除类B
并恢复类A
.
$(".A, .B").toggleClass("A B");
Run Code Online (Sandbox Code Playgroud)
Rio*_*ams 38
下面是一个简化版本:(虽然不是优雅,但易于后续)
$("#yourButton").toggle(function()
{
$('#target').removeClass("a").addClass("b"); //Adds 'a', removes 'b'
}, function() {
$('#target').removeClass("b").addClass("a"); //Adds 'b', removes 'a'
});
Run Code Online (Sandbox Code Playgroud)
或者,类似的解决方案:
$('#yourbutton').click(function()
{
$('#target').toggleClass('a b'); //Adds 'a', removes 'b' and vice versa
});
Run Code Online (Sandbox Code Playgroud)
我制作了一个用于 DRY 的 jQuery 插件:
$.fn.toggle2classes = function(class1, class2){
if( !class1 || !class2 )
return this;
return this.each(function(){
var $elm = $(this);
if( $elm.hasClass(class1) || $elm.hasClass(class2) )
$elm.toggleClass(class1 +' '+ class2);
else
$elm.addClass(class1);
});
};
// usage example:
$(document.body).on('click', () => {
$(document.body).toggle2classes('a', 'b')
})
Run Code Online (Sandbox Code Playgroud)
body{ height: 100vh }
.a{ background: salmon }
.b{ background: lightgreen }
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
Click anywhere
Run Code Online (Sandbox Code Playgroud)
小智 5
最简单的解决方案是toggleClass()
分别处理两个类。
假设您有一个图标:
<i id="target" class="fa fa-angle-down"></i>
Run Code Online (Sandbox Code Playgroud)
要在两者之间切换fa-angle-down
,fa-angle-up
请执行以下操作:
$('.sometrigger').click(function(){
$('#target').toggleClass('fa-angle-down');
$('#target').toggleClass('fa-angle-up');
});
Run Code Online (Sandbox Code Playgroud)
因为我们fa-angle-down
一开始就没有fa-angle-up
每次切换两者时,一个会离开另一个出现。
归档时间: |
|
查看次数: |
175367 次 |
最近记录: |