Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.07.2016, 16:44
Аватар для villiwalla
Интересующийся
Отправить личное сообщение для villiwalla Посмотреть профиль Найти все сообщения от villiwalla
 
Регистрация: 16.02.2016
Сообщений: 29

Узнать lenght после клика по элементу
Добрый день! Подскажите пожалуйста, каким способом можно узнать lenght активного элемента по которому кликнули? Задача в том что бы при клике на увеличенное изображение, появлялось следующие за ним изображение. Добавлять класс на элемент для определения что он сейчас активный и от него +1/-1 не хотелось бы. Ниже как сейчас работает:

<img src="img/image_01_mini.jpg" data-src="img/image_01.jpg" rel="group1" class="lightbox">
<img src="img/image_02_mini.jpg" data-src="img/image_02.jpg" rel="group1" class="lightbox">
<img src="img/image_03_mini.jpg" data-src="img/image_03.jpg" rel="group1" class="lightbox">

var overlay = document.createElement('div');
    overlay.id = 'overlay';
    overlay.style.height = screen.availHeight + 'px';
    document.body.appendChild(overlay);
    var gallery = document.querySelectorAll('.lightbox');

    for (var i = 0; i < gallery.length; i++) {
        gallery[i].addEventListener('click', function () {
            var linkLb = this.getAttribute('data-src');
            overlay.classList.add('show');
            var containLb = document.createElement('div')
            containLb.className = 'lightbox-image';
            containLb.innerHTML = '<img src=' + linkLb + '>';
            overlay.parentNode.appendChild(containLb);
        }, false);
    }

    overlay.addEventListener('click', function hideLb() {
        if (overlay.classList == 'show')
            overlay.classList.remove('show');
        overlay.nextElementSibling.remove('lightbox-image');

    }, false);
Ответить с цитированием
  #2 (permalink)  
Старый 14.07.2016, 18:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

mini lightbox
villiwalla,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .overlay {
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  z-index: 10;
  background-color: rgba(0,0,0,0.5);
  display: none;
}
.lightbox-image {
    display: none;
    width: 300px;
    height: 400px;
    line-height: 400px;
    position: fixed;
    top:0;
    left: 0;
    right: 0;
    bottom: 0;
    margin: auto;
    background-color: #f1c40f;
    border-radius: 5px;
    text-align: center;
    z-index: 11; /* 1px higher than the overlay layer */
}
.lightbox-image img{
  height:  100%;
  width: auto;
}
.show{
  display: block;
}
.lightbox{
  height: 150px;
}

  </style>
</head>

<body>

<img src="http://www.disneyclips.com/imagesnewb/images/clipzummi2.gif" data-src="http://www.disneyclips.com/imagesnewb/images/clipzummi2.gif" rel="group1" class="lightbox">


<img src="http://www.0lik.ru/uploads/posts/2008-10/1223398222_0lik.ru_222.png" data-src="http://www.0lik.ru/uploads/posts/2008-10/1223398222_0lik.ru_222.png" rel="group1" class="lightbox">


<img src="http://cliparts.co/cliparts/8iG/686/8iG686orT.gif" data-src="http://cliparts.co/cliparts/8iG/686/8iG686orT.gif" rel="group1" class="lightbox">
<script>
  var overlay = document.createElement('div');
    overlay.className = 'overlay';
    document.body.appendChild(overlay);
    var containLb = document.createElement('div');
    containLb.className = 'lightbox-image';
    var bigImg = new Image;
    containLb.appendChild(bigImg);
    document.body.appendChild(containLb);
    var indx = 0, arrSrc = [] ;
    var gallery = document.querySelectorAll('.lightbox');
    [].forEach.call(gallery, function(item, i) {
            arrSrc[i] = item.dataset.src;
            item.addEventListener('click', function() {
                indx = i;
                bigImg.src = arrSrc[indx];
                containLb.classList.toggle("show");
                overlay.classList.toggle("show");
            },false);
        });


    overlay.addEventListener('click', function() {
         containLb.classList.toggle("show");
         overlay.classList.toggle("show");

    }, false);
    containLb.addEventListener('click', function(event) {
        event.preventDefault();
        indx = ++indx % arrSrc.length;
        bigImg.src = arrSrc[indx];

    }, false);
</script>

</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как имитировать клик по элементу созданого после загрузки страницы? anoth3r jQuery 3 29.09.2011 12:22
функция внутри Live() срабатывает после второго клика Ad1r jQuery 7 09.08.2011 14:11
Открытие ссылки после клика по баннеру banderos Общие вопросы Javascript 6 31.01.2010 00:02
Узнать url после перенаправления ipevgeny AJAX и COMET 0 05.11.2009 00:18
Не убирать кнопку после клика по ней. CompModdd jQuery 2 12.05.2009 02:13