如果我有类名为 .A 和 .B,想要在按钮点击时切换它们,有什么好的 jQuery 解决方案?我还不明白 toggleClass()
是如何工作的。
是否有一种内联解决方案可将其放入 onclick=""
事件中?
如果我有类名为 .A 和 .B,想要在按钮点击时切换它们,有什么好的 jQuery 解决方案?我还不明白 toggleClass()
是如何工作的。
是否有一种内联解决方案可将其放入 onclick=""
事件中?
var $trigger = $(".A"); $trigger.on("click", function() {$trigger.toggleClass("A B")});
- mummybot以下是一个简化版本:(虽然不够优雅,但易于理解)
$("#yourButton").toggle(function()
{
$('#target').removeClass("a").addClass("b"); //Adds 'a', removes 'b'
}, function() {
$('#target').removeClass("b").addClass("a"); //Adds 'b', removes 'a'
});
另一个类似的解决方案:
$('#yourbutton').click(function()
{
$('#target').toggleClass('a b'); //Adds 'a', removes 'b' and vice versa
});
toggle
的方式已经过时了。 - vittore我制作了一个jQuery插件,用于DRY编程:
$.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')
})
body{ height: 100vh }
.a{ background: salmon }
.b{ background: lightgreen }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
Click anywhere
toggleClass()
来切换这两个类。假设你有一个图标:
<i id="target" class="fa fa-angle-down"></i>
fa-angle-down
和fa-angle-up
之间切换,请按照以下步骤进行: $('.sometrigger').click(function(){
$('#target').toggleClass('fa-angle-down');
$('#target').toggleClass('fa-angle-up');
});
由于一开始我们只有fa-angle-down
而没有fa-angle-up
,所以每次你切换两者时,一个会离开以供另一个出现。
onClick
请求如下:<span class="A" onclick="var state = this.className.indexOf('A') > -1; $(this).toggleClass('A', !state).toggleClass('B', state);">Click Me</span>
试一下:https://jsfiddle.net/v15q6b5y/
仅使用类似jQuery的JS代码:
$('.selector').toggleClass('A', !state).toggleClass('B', state);
使用Jquery在两个类'A'和'B'之间切换。
$('#selecor_id').toggleClass("A B");
这种情况的一个例子可能是具有要在另一个元素上切换的类的按钮(例如容器中的选项卡)。
// 1: define the array of switching classes:
var types = ['web','email'];
// 2: get the active class:
var type = $(mybutton).prop('class');
// 3: switch the class with the other on (say..) the container. You can guess the other by using _.without() on the array:
$mycontainer.removeClass(_.without(types, type)[0]).addClass(type);
onclick=""
) 是不好的。为什么不使用jQuery来注册一个适当的事件处理程序(如果您有许多具有相同处理程序的元素,则可以使用代理/存活事件)? - ThiefMaster