Jika saya memiliki kelas .A dan kelas .B dan ingin beralih di antara klik tombol, apa solusi yang bagus untuk itu di jQuery? Saya masih tidak mengerti cara toggleClass()
kerjanya.
Apakah ada solusi sebaris untuk menjalankannya onclick=""
?
Jika saya memiliki kelas .A dan kelas .B dan ingin beralih di antara klik tombol, apa solusi yang bagus untuk itu di jQuery? Saya masih tidak mengerti cara toggleClass()
kerjanya.
Apakah ada solusi sebaris untuk menjalankannya onclick=""
?
Jawaban:
Jika elemen Anda mengekspos kelas A
dari awal, Anda dapat menulis:
$(element).toggleClass("A B");
Ini akan menghapus kelas A
dan menambah kelas B
. Jika Anda melakukannya lagi, itu akan menghapus kelas B
dan mengembalikan kelas A
.
Jika Anda ingin mencocokkan elemen yang mengekspos salah satu kelas, Anda dapat menggunakan pemilih beberapa kelas dan menulis:
$(".A, .B").toggleClass("A B");
var $trigger = $(".A"); $trigger.on("click", function() {$trigger.toggleClass("A B")});
Ini adalah versi yang disederhanakan: ( meskipun tidak elegan, tetapi mudah diikuti )
$("#yourButton").toggle(function()
{
$('#target').removeClass("a").addClass("b"); //Adds 'a', removes 'b'
}, function() {
$('#target').removeClass("b").addClass("a"); //Adds 'b', removes 'a'
});
Atau, solusi serupa:
$('#yourbutton').click(function()
{
$('#target').toggleClass('a b'); //Adds 'a', removes 'b' and vice versa
});
toggle
percaya cara penggunaan ini dibatasi dalam jquery 2.0
Saya telah membuat plugin jQuery untuk bekerja KERING:
$.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);
});
};
Anda bisa mencobanya di sini, salin dan jalankan ini di konsol lalu coba:
$('body').toggle2classes('a', 'b');
Anda onClick
permintaan:
<span class="A" onclick="var state = this.className.indexOf('A') > -1; $(this).toggleClass('A', !state).toggleClass('B', state);">Click Me</span>
Cobalah: https://jsfiddle.net/v15q6b5y/
Hanya JS à la jQuery :
$('.selector').toggleClass('A', !state).toggleClass('B', state);
Berikut cara 'non-konvensional' lainnya.
Contoh skenario ini bisa berupa tombol yang memiliki kelas untuk diaktifkan pada elemen lain (misalnya tab dalam wadah).
// 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);
Solusi termudah adalah untuk toggleClass()
kedua kelas secara individual.
Katakanlah Anda memiliki ikon:
<i id="target" class="fa fa-angle-down"></i>
Untuk beralih di antara fa-angle-down
dan fa-angle-up
lakukan hal berikut:
$('.sometrigger').click(function(){
$('#target').toggleClass('fa-angle-down');
$('#target').toggleClass('fa-angle-up');
});
Karena kami memiliki fa-angle-down
di awal tanpa fa-angle-up
setiap kali Anda beralih keduanya, satu meninggalkan yang lain muncul.
Beralih antara dua kelas 'A' dan 'B' dengan Jquery.
$ ('# selecor_id'). toggleClass ("A B");
onclick=""
) buruk. mengapa Anda tidak menggunakan jQuery untuk mendaftarkan event handler yang tepat (atau acara delegasi / siaran langsung jika Anda memiliki banyak elemen dengan handler yang sama)