Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2015, 17:18
Аспирант
Отправить личное сообщение для Mrs.Haneki Посмотреть профиль Найти все сообщения от Mrs.Haneki
 
Регистрация: 16.04.2014
Сообщений: 59

Добавление css если пункт активен
имеется плейлист в плеере:
<div class="playlist">
  <ul>
    <li data-videoplaylist="0" class="active">
      <span class="number">1</span>
      <span class="play">в–¶</span>
      <span class="title">Video - 1</span>
    </li>
    <li data-videoplaylist="1">
      <span class="number">2</span>
      <span class="play">в–¶</span>
      <span class="title">Video - 2</span>
    </li>
  </ul>
</div>


.playlist .play {display: none;}


нужно создать условие: если li активен - то скрываем span.number и показываем span.play. Написал код, но он не работает. Помогите пожалуйста подкорректировать его!

$(document).ready(function () {
        if ('.playlist ul li.active') {
            $('span.play').css({ 'display': 'block' });
            $('span.number').css({ 'display': 'none' });
        }
        else {
            $('span.number').css({ 'display': 'block' });
            $('span.play').css({ 'display': 'none' });
        }
    });
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2015, 17:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Mrs.Haneki,
а кто активным то делает li?
Ответить с цитированием
  #3 (permalink)  
Старый 12.10.2015, 09:04
Аспирант
Отправить личное сообщение для Mrs.Haneki Посмотреть профиль Найти все сообщения от Mrs.Haneki
 
Регистрация: 16.04.2014
Сообщений: 59

JS код

(function () {

    var videos = [
      {
          src: [
            'playlist/N1.mp4'
          ],
          poster: 'src/img/n1.jpg',
          title: 'Это видео про рыбок. Это видео про рыбок. Это видео про рыбок.'
      },
      {
          src: [
            'playlist/N2.mp4'
          ],
          poster: 'src/img/n2.jpg',
          title: 'Это очень длинное и нудное видео'
      },
      {
          src: [
            'playlist/N3.mp4'
          ],
          poster: 'src/img/n3.jpg',
          title: 'До чего же красива природа России'
      },
      {
          src: [
            'playlist/N4.mp4'
          ],
          poster: 'src/img/n4.jpg',
          title: 'это просто так. скачала откуда-то'
      }
    ];


    var demoModule = {
        init: function () {
            this.els = {};
            this.cacheElements();
            this.initVideo();
            this.createListOfVideos();
            this.bindEvents();
            this.overwriteConsole();
        },
        overwriteConsole: function () {
            console._log = console.log;
            console.log = this.log;
        },
        log: function (string) {
            demoModule.els.log.append('<p>' + string + '</p>');
            console._log(string);
        },
        cacheElements: function () {
            this.els.$playlist = $('div.playlist > ul');
            this.els.$next = $('#next');
            this.els.$prev = $('#prev');
            this.els.log = $('div.panels > pre');
        },
        initVideo: function () {
            this.player = videojs('video');
            this.player.playList(videos);
        },
        createListOfVideos: function () {
            var html = '';
            for (var i = 0, len = this.player.pl.videos.length; i < len; i++) {
                html += '<li data-videoplaylist="' + i + '">' +
                          '<span class="number">' + (i + 1) + '</span>' +
                          '<span class="play">▶</span>' +
                          '<span class="poster"><img src="' + videos[i].poster + '"></span>' +
                          '<span class="title">' + videos[i].title + '</span>' +
                        '</li>';
            }
            this.els.$playlist.empty().html(html);
            this.updateActiveVideo();
        },
        updateActiveVideo: function () {
            var activeIndex = this.player.pl.current;

            this.els.$playlist.find('li').removeClass('active');
            this.els.$playlist.find('li[data-videoplaylist="' + activeIndex + '"]').addClass('active');
        },
        bindEvents: function () {
            var self = this;
            this.els.$playlist.find('li').on('click', $.proxy(this.selectVideo, this));
            this.els.$next.on('click', $.proxy(this.nextOrPrev, this));
            this.els.$prev.on('click', $.proxy(this.nextOrPrev, this));
            this.player.on('next', function (e) {
                console.log('Next video');
                self.updateActiveVideo.apply(self);
            });
            this.player.on('prev', function (e) {
                console.log('Previous video');
                self.updateActiveVideo.apply(self);
            });
            this.player.on('lastVideoEnded', function (e) {
                self.updateActiveVideo.apply(self);
                console.log('Last video has finished');
            });
        },
        nextOrPrev: function (e) {
            var clicked = $(e.target);
            this.player[clicked.attr('id')]();
        },
        selectVideo: function (e) {
            var clicked = e.target.nodeName === 'LI' ? $(e.target) : $(e.target).closest('li');

            if (!clicked.hasClass('active')) {
                console.log('Selecting video');
                var videoIndex = clicked.data('videoplaylist');
                this.player.playList(videoIndex);
                this.updateActiveVideo();
            }
        }
    };

    demoModule.init();
})(jQuery);
Ответить с цитированием
  #4 (permalink)  
Старый 12.10.2015, 09:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от Mrs.Haneki
Написал код, но он не работает
Это даже кодом-то не назовешь...

Последний раз редактировалось ksa, 12.10.2015 в 09:10.
Ответить с цитированием
  #5 (permalink)  
Старый 12.10.2015, 09:13
Аспирант
Отправить личное сообщение для Mrs.Haneki Посмотреть профиль Найти все сообщения от Mrs.Haneki
 
Регистрация: 16.04.2014
Сообщений: 59

=( нет
как тогда сделать чтоб он отрабатывал постоянно? я новичок в js. помогите пожалуйста
Ответить с цитированием
  #6 (permalink)  
Старый 12.10.2015, 09:23
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Для одного раза можно так

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.playlist .play {
	display: none;
}
</style>
<script type='text/javascript'>
$(function(){
	$('.playlist li.active > .play').css({'display': 'block'});
	$('.playlist li.active > .number').css({'display': 'none'});
});
</script>
</head>
<body>
<div class="playlist">
  <ul>
    <li data-videoplaylist="0" class="active">
      <span class="number">1</span>
      <span class="play">в–¶</span>
      <span class="title">Video - 1</span>
    </li>
    <li data-videoplaylist="1">
      <span class="number">2</span>
      <span class="play">в–¶</span>
      <span class="title">Video - 2</span>
    </li>
  </ul>
</div>
</body>
</html>


Сообщение от Mrs.Haneki
как тогда сделать чтоб он отрабатывал постоянно?
Отлавливать момент смены "активного" LI... После этого выполнять работу со SPANнами...
Ответить с цитированием
  #7 (permalink)  
Старый 12.10.2015, 09:25
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от Mrs.Haneki
if ('.playlist ul li.active')
Этот кусок равносилен записи

if ('жили у бабуси два веселых гуся')
Ответить с цитированием
  #8 (permalink)  
Старый 12.10.2015, 09:32
Аспирант
Отправить личное сообщение для Mrs.Haneki Посмотреть профиль Найти все сообщения от Mrs.Haneki
 
Регистрация: 16.04.2014
Сообщений: 59

а как отлавливать момент смены "активного" LI ??
Ответить с цитированием
  #9 (permalink)  
Старый 12.10.2015, 09:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Mrs.Haneki
.playlist .play {display: none;}
в css заменить на
.playlist .play, .playlist .active .number{display: none;}
  .playlist .active .play{display:  block;}

и не мучать скрипты
если когда - нибудь очень захочется
то медитировать в конце 79 строки
Ответить с цитированием
  #10 (permalink)  
Старый 12.10.2015, 09:47
Аспирант
Отправить личное сообщение для Mrs.Haneki Посмотреть профиль Найти все сообщения от Mrs.Haneki
 
Регистрация: 16.04.2014
Сообщений: 59

спасибо)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
если (свойство css == 2) свойство css = 1; funkypublic Events/DOM/Window 1 09.06.2010 17:39
Определение свойств стиля в javascript, если в CSS он задан особым образом SunnyDay Общие вопросы Javascript 13 13.03.2010 19:09
Подскажите как сделать меню на CSS если: greatilya (X)HTML/CSS 10 18.10.2009 20:26
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Ссылка под слоем перекрывает слой Devider Общие вопросы Javascript 7 24.02.2009 23:18