3

AudioVol+..(ex.1,2,3 and other) クラス名の要素をクリックしたときに、id の div がクラス名を変更しない理由を教えてくださいoption_audio_player_mute

また、コードを削減/リファクタリングできますか?

$('.option_audio_player_mute').live('click', function () {
    var idn = this.id.split('+')[1];
    var vol1 = $('#AudioVol1+' + idn);
    if ($(this).hasClass('audio_mute')) {
        vol1.removeClass('audio_vol_not_active').addClass('audio_vol_active');
    } else if ($(this).hasClass('audio_not_mute')) {
        vol1.removeClass('audio_vol_active').addClass('audio_vol_not_active');
    }
});

なぜこれが機能しないのですか?

4

2 に答える 2

1

+記号は、CSS (および jQuery) セレクターで特別な意味を持ちます: 隣接する兄弟セレクターを指定するために使用されます

+ID セレクターの記号を 2 つのバックスラッシュでエスケープしてみてください。

var vol1 = $("#AudioVol1\\+" + idn);
于 2012-09-15T12:06:23.820 に答える
1

.toggleClassを使用して、.on代わりに使用できます.live

$(document).on('click', '.option_audio_player_mute', function() {
    var vol1 = $("#AudioVol1\\+" + this.id.split('+')[1]), 
        $this = $(this);
    vol1.toggleClass('audio_vol_active', $this.hasClass('audio_mute'))
        .toggleClass('audio_vol_not_active', $this.hasClass('audio_not_mute'));
});
于 2012-09-15T12:13:14.000 に答える