2013-09-06 4 views
1

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

$(function() { 

    var i = 0 


    $(multibubbles[i]).appendTo('#page'); 
    $(multibubbles[i]).children('#next-arrow').show(); 

     $(multibubbles[i]).children('#next-arrow').click(function (e) { 
      $(multibubbles[i]).hide(); 
      i++; 
      $(multibubbles[i]).appendTo('#page'); 
      if (i == multibubbles.length - 1) { 
       $(multibubbles[i]).children('#next-arrow').hide(); 
      } 
      else { 
       $(multibubbles[i]).children('#next-arrow').show(); 
      } 
      $(multibubbles[i]).children('#prev-arrow').show(); 
     }) 

     $(multibubbles[i]).children('#prev-arrow').click(function (e) { 
      $(multibubbles[i]).hide(); 
      i-- 
      $(multibubbles[i]).appendTo('#page'); 
      if (i == 0) { 
       $(multibubbles[i]).children('#prev-arrow').hide(); 
      } 
      else { 
       $(multibubbles[i]).children('#prev-arrow').show(); 
      } 
      $(multibubbles[i]).children('#next-arrow').show(); 
     }) 
}) 

Когда я нажмите на стрелку в первый раз, когда он идет к следующей статье штрафа, но если я нажимаю снова он ничего не делает, потому что я не могу получить его, чтобы выйти из первой функции мыши. Я попытался использовать 'return', но это тоже не сработало. Пожалуйста, помогите мне.

+2

где вы меняете свои переплеты? они не привязаны повторно только потому, что изменяется 'i', так как функция выполняется только один раз. где-то в вашем коде вам нужно вернуться к привязке слушателей к новым объектам – jbr3zy

+1

Пожалуйста, используйте точки с запятой! –

+0

Когда элемент перемещается в DOM, все события не связаны с этим элементом. Чтобы сохранить события, вы можете использовать jQuery 'clone (true, true)' в сочетании с добавлением. Подобно 'var $ clone = $ (element) .clone (true, true); $ (Элемент) .remove(); $ Clone.appendTo ('targetElement') '; Не зная вашей точной разметки DOM, я бы не смог сказать, применяется ли это в вашем случае или нет. Можете ли вы создать [jsFiddle] (http://jsFiddle.net), чтобы показать проблему? – Nope

ответ

1

Я предполагаю, что у вас есть только один элемент «следующая страница» и один элемент «предыдущая страница». В этом случае нет необходимости использовать для этого массив «multibubbles». Я предполагаю, что «multibubbles» может быть настроен как массив строковых значений. Так как элементы «следующей стрелки», вероятно, начинаются видимыми, нет необходимости использовать «show()». Если вы хотите сделать его невидимым, просто измените отображение css для идентификатора «Следующая стрелка». Кроме того, сначала установите '# prev-arrow' в css.

$(document).ready(function() { 
    multibubbles[1] = 'blah blah'; 
    multibubbles[2] = 'blah blah'; 
    ... 

    var numarticles = multibubbles.length; 
    var i=0; 
    $('#next-arrow').click(function() { 
     i++; 
     if (i == (numarticles-1)) { 
      $('multibubbles[i]').show(); 
      $('#next-arrow').hide(); 
      i = numarticles-1; 
     } 
     $('#prev-arrow').show(); 
    }); 

    $('#prev-arrow').click(function() { 
     i--; 
     if (i == 0) { 
      $(multibubbles[i]).show(); 
      $(#prev-arrow).hide(); 
      i=0; 
     } 
     $('#next-arrow').show(); 
    }); 
}); 
+0

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

Смежные вопросы