クラス .A とクラス .B があり、ボタンのクリックで切り替えたい場合、jQuery での適切な解決策は何ですか? 私はまだどのように動作するのか理解していませんtoggleClass()
。
onclick=""
それをイベントに入れるためのインラインソリューションはありますか?
クラス .A とクラス .B があり、ボタンのクリックで切り替えたい場合、jQuery での適切な解決策は何ですか? 私はまだどのように動作するのか理解していませんtoggleClass()
。
onclick=""
それをイベントに入れるためのインラインソリューションはありますか?
これは簡略化されたバージョンです: (エレガントではありませんが、簡単に理解できます)
$("#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
});
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')
})
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
ここに別の「型にはまらない」方法があります。
このシナリオの例として、別の要素 (コンテナ内のタブなど) で切り替えられるクラスを持つボタンが考えられます。
// 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);