2013-09-05 2 views
1

Я создаю веб-сайт со страницами, которые отображаются в виде слайдера. Каждая страница имеет уникальный идентификатор, но у всех есть класс с именем «раздел». Теперь мне кажется, что я не могу найти идентификатор div, который отображается на экране, идентификатор «ТЕКУЩАЯ СТРАНИЦА» (см. Прикрепленное изображение). Следующая/правая кнопка будет горизонтально прокручивать веб-сайт вправо, а предыдущая/левая кнопка будет прокручивать веб-сайт влево.Найти текущий элемент слайдера

Сайт/экран макет:
Website/screen layout

Fiddle 1

Fiddle 2

Fiddle один имеет следующую кнопку/предыд внутри каждого DIV, но я хочу, чтобы контролировать движение дивы с одним набором кнопки next и prev.

Это Javascript я использую для следующих кнопок Prev /:

$('.next').stop().click(function() { 

    if($(this).closest('.checkout').next().css('display') == 'none'){ 
     alert('a'); 
    }else{ 
     $(this).parent().animate({ 
      marginLeft: '-100%' 
     }, 500); 
     $(this).parent().next().animate({ 
      marginLeft: '0%' 
     }, 500); 
     $(this).parent().animate({ 
      marginLeft: '-100%' 
     }, 500); 
    } 

}); 

$('.prev').click(function() { 

    $(this).stop().parent().animate({ 
     marginLeft: '0%' 
    }, 500); 
    $(this).stop().parent().prev().animate({ 
     marginLeft: '0%' 
    }, 500); 

    $(this).stop().parent().animate({ 
     marginLeft: '0%' 
    }, 500); 

}); 
+1

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

+0

Я попробую это, спасибо. – AnAspiringCanadian

ответ

2

Метод 1

Как насчет зацикливание над вашими checkout дивы и проверки, который является первым, чтобы иметь margin-left: 0px;?

function getCurrentPage(){ 
    var current = ""; 
    $.each($(".checkout"), function(){ 
     if($(this).css("margin-left") == "0px"){ 
      current = this.id; 
      return false; 
     } 
    }); 
    return current; 
} 

Fiddle 1: http://jsfiddle.net/rSuc6/3/

Fiddle 2: http://jsfiddle.net/SxBZx/3/

Метод 2

Работая дальше ответ Barthosz, вы можете также использовать глобальную переменную для отслеживания вашей страницы :

Fiddle: http://jsfiddle.net/SxBZx/5/

Метод 3

Вы также можете работать с active класса.

На каждом следующем/предыдущем нажмите:

//remove current active 
$(".active").removeClass("active"); 
//set new current to active 
$(this).addClass("active"); 
//retrieve ID of active 
$(".active").attr("id"); 
+0

Спасибо за это, теперь мне нужно сделать это только с одним набором кнопки next/prev. В настоящее время каждый div имеет следующий/prev в нем. Вы посетили мою проектную ссылку? Вы получите от этого идею. Следующие и предыдущие кнопки находятся внизу в навигации, они не могут быть включены на каждую страницу, но только в навигации, поэтому $ (this) .parent не будет работать в этом. – AnAspiringCanadian

+0

Обновлен мой ответ с большим количеством методов. Что касается ваших кнопок, просто создайте один div '# prev' и' # next' и расположите их абсолютно над контейнером. Их позиции не должны быть анимированы. –

+0

Это отзывчивый дизайн, я бы предпочел не устанавливать абсолютные кнопки, иначе я уверен, что клиент найдет устройства, которые не будут правильно отображать кнопки. :/ – AnAspiringCanadian

1

простейшими способа (для меня):

добавить это в ваш HTML, чтобы увидеть результат:

<span id="whichid"></span> 

добавить это перед ваш js

var page=0; 

внутри вашей, если добавить заявления:

page=page+1; 
$('#whichid').text(page); 

на следующей странице, а также:

page=page-1; 
$('#whichid').text(page); 

для предыдущей страницы.

Вы можете использовать: nthoftype или: child или какой-либо подобный селектор, чтобы получить идентификатор вашей страницы.

+0

Добавление глобальной переменной jQuery будет работать лучше, чем скрытый элемент. –

+0

Это не имеет значения. Я просто показал способ пойти с ним. –

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