привязка события щелчка с использованием изображений к странице

#jquery

#jquery

Вопрос:

На моей странице есть меню, которое изменяет источник определенного div (). Элементы, являющиеся разделами, расположены в div, называемом foliolist

Div, в котором изменяется изображение, находится ниже:

 <div id="random"><img id="grouptabs" src="/u/i/1x0.jpg" /> </div>
  

Список элементов, которые изменяют div, они находятся в самом низу страницы

 <div class="foliolist"><a href="/u/i/2.png"><img src="/v/r.gif"/></a></div>
<div class="foliolist"><a href="/u/i/4.png"><img src="/v/r.gif"/></a></div>
<div class="foliolist"><a href="/u/i/6.png"><img src="/v/r.gif"/></a></div>
  

Код Jquery, который это делает

 $('.foliolist a').click(function(e) { 
  e.preventDefault(); 
  $('.foliolist a').css('background-color', 'transparent');  
  $(this).css('background-color', '#FFFFFF'); 
  $('#grouptabs').attr('src', $(this).attr('href')); 
});
  

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

 $('#bubbles > #folioholder > .foliolist > a:first').each(function(e){
  $('.foliolist').css('background-color', 'transparent'); 
  $(this).parent().css('background-color', '#FFFFFF');
  $('#grouptabs').attr('src', $(this).attr('href'));
});
  

Я хочу добавить новые панели навигации, чтобы улучшить использование страницы, добавив изображения кнопок next и previous в дополнение к странице. Они будут расположены в левой и правой части страницы.

При нажатии левой кнопки next прогресс в таблице увеличивается, и то же самое для предыдущей кнопки, но она идет в обратном направлении.

Я не знаю, как подойти к этому, не выглядя глупо, поэтому буду признателен за любую помощь.

Спасибо

Ответ №1:

Небольшой комментарий: ваш последний фрагмент кода может быть заменен на $('#bubbles > #folioholder > .foliolist > a:first').click();

По актуальному вопросу :

Вам нужно будет создать свои кнопки и привязать к ним событие для извлечения текущего отображаемого изображения, чтобы получить следующий / предыдущий img.

 $('#btnNext').click(function(){
    //get current picture displayed
    var currPicSrc = $('#grouptabs').attr('src');
    var foundPic = false;
    var nextPic = "";        
    $('.foliolist a img').each(function(){
        if (foundPic) {nextPic = $(this).attr('src'); return false; }
        if ($(this).attr('src') == currPicSrc) {
            foundPic = true;
        }
    });
    if (nextPic == "") {
        nextPic = $('.foliolist:first a img').attr('src');
    }
    $('#grouptabs').attr('src', nextPic);
});

$('#btnPrev').click(function(){
    //get current picture displayed
    var currPicSrc = $('#grouptabs').attr('src');
    var foundPic = false;
    var prevPic = "";        
    $('.foliolist a img').each(function(){
        if ($(this).attr('src') == currPicSrc) {
            foundPic = true;
            return false;
        }
        if (!foundPic) {prevPic = $(this).attr('src'); }
    });
    if (prevPic == "") {
        prevPic = $('.foliolist:last a img').attr('src');
    }
    $('#grouptabs').attr('src', prevPic);
});
  

Это способ сделать это (я не рассматриваю случай, когда вы нажимаете предыдущий на первом рисунке / нажимаете следующий на последнем рисунке).

Другим способом было бы добавить идентификаторы к вашему изображению и поиграть с ними (особенно легко, если вы используете name like <img id="whatever1" /><img id="whatever2" /> [...] , чтобы вы могли получить текущее изображение с номером в идентификаторе, а затем выполнить цикл по нему.

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

1. Большое спасибо за это, я привязал его к своим изображениям, но при этом получается следующее изображение, а не обновляется страница <div id=»btnNext»><a href=»»><img src=»f.png»></a></div>. Я уверен, что делаю что-то неправильно, но не уверен, что именно.

2. <a href=""> обновит страницу, поскольку она не получила значения в href (поведение по умолчанию). Попробуйте <div id="btn_Container"><a href="#" id="btnNext">Next image</a></div> . Кроме того, добавление return false; в функцию .click также может помочь остановить это поведение, хотя использование пустой ссылки href является плохой практикой.

3. Спасибо Kraz, я все это сделал, но изображение не получается. Я даже использовал firebug, и он не запускается ни при каких щелчках.

4. @Kraz вы упомянули другой метод, использующий идентификаторы, это может быть быстрее, что имеет смысл, как бы я мог заменить предоставленный вами код. Я размещаю оповещение, и оповещение работает, но оно не находит . листать img я просто в тупике…

5. В моем ответе отсутствовала важная строка: строка, которая изменила исходный код img ( $('#grouptabs').attr('src', nextPic); ). Что касается альтернативного метода, для него потребуется собственный ответ. Я мог бы сделать это, если бы нашел время сегодня.