Класс переключения jQuery

#jquery #class #html #audio #toggle

#jquery #класс #HTML #Аудио #переключать

Вопрос:

У меня возникли проблемы с добавлением функции jQuery toggleClass в остальную часть моего кода. На странице есть несколько аудиотегов HTML5, которые управляются с помощью jQuery. Я попытался добавить функцию переключения к моей функции управления звуком jQuery, но она не добавляет класс, и впоследствии управление звуком не работает .. так что я полагаю, что это какая-то странная синтаксическая ошибка.

Что вы, ребята, порекомендуете? Ниже приведен jsFiddle и моя (к сожалению) слабая попытка 🙂

http://jsfiddle.net/danielredwood/FTfSq/10/

HTML:

 <div id="music_right">
    <div class="thumbnail" id="paparazzi">
        <a class="playback">
            <img class="play" src="http://www.lucisz.com/imgs/play.png" />
        </a>
        <audio>
         <source src="../audio/fernando_garibay_paparazzisnlmix.ogg" type="audio/ogg" />
            <source src="../audio/fernando_garibay_paparazzisnlmix.mp3" type="audio/mpeg" />
            Your browser does not support HTML5 audio.
        </audio>
    </div>
    <div class="thumbnail" id="danceinthedark">
        <a class="playback">
            <img class="play" src="http://www.lucisz.com/imgs/play.png" />
        </a>
        <audio>
         <source src="../audio/fernando_garibay_danceinthedark.ogg" type="audio/ogg" />
            <source src="../audio/fernando_garibay_danceinthedark.mp3" type="audio/mpeg" />
            Your browser does not support HTML5 audio.
        </audio>
    </div>
    <div class="thumbnail" id="bornthisway">
        <a class="playback">
            <img class="play" src="http://www.lucisz.com/imgs/play.png" />
        </a>
        <audio>
         <source src="../audio/fernando_garibay_bornthisway.ogg" type="audio/ogg" />
            <source src="../audio/fernando_garibay_bornthisway.mp3" type="audio/mpeg" />
            Your browser does not support HTML5 audio.
        </audio>
    </div>
</div>
  

JavaScript:

 var curPlaying;
$(function() {
    $(".playback").click(function(e){
        e.preventDefault();
        var song = $(this).next('audio')[0];
        song.toggleClass("playing");
        if(song.paused){
            song.play();
            if(curPlaying) $("audio", "#" curPlaying)[0].pause();
        } else {
            song.pause();
            }
        curPlaying = $(this).parent()[0].id;
    });
});

//the function below works, but doesn't have the add/remove class functions

var curPlaying;
$(function() {
    $(".playback").click(function(e) {
        e.preventDefault();
        var song = $(this).next('audio')[0];
        if (song.paused) {
            song.play();
            if (curPlaying) $("audio", "#"   curPlaying)[0].pause();
        } else {
            song.pause();
        }
        curPlaying = $(this).parent()[0].id;
    });
});
  

Комментарии:

1. Взгляните на .addClass() и .removeClass() .

2. @Blender О каком контексте вы думаете? добавление класса, который обозначает трек как воспроизводимый .. и оттуда изменить источник изображения?

3. Да, это то, что я бы сделал.

4. @Blender. Умно, я врубаюсь. Спасибо

5. Я должен прекратить отвечать на вопросы с комментариями…

Ответ №1:

 $('thumbnail').toggleClass('pausing playing');
  

Переключаемый класс: добавьте или удалите один или несколько классов из каждого элемента в наборе сопоставляемых элементов, в зависимости от наличия класса или значения аргумента switch.

Комментарии:

1. Очень умная реализация toggleClass() 🙂

Ответ №2:

Я бы использовал .addClass() и .removeClass() , поскольку это немного очистит ваш код и позволит вам использовать CSS для выполнения всей этой работы с макетом:

 $('thumbnail').toggle(function(){
    $('.play', this).removeClass('pausing');
    $('.play', this).addClass('playing');
}, function(){
    $('.play', this).addClass('pausing');
    $('.play', this).removeClass('playing');
});
  

Комментарии:

1. немного поразмыслив, я могу использовать эту идею для одновременного использования в других целях, но для этого нужно добавить ее к воспроизводимому аудиотегу. Я собираюсь переписать вопрос с целью добавления класса в эту функцию. Один момент.