2012-05-14 2 views
0

Я видел похожие вопросы, размещенные здесь, но я не могу найти подходящий для моего желаемого подхода. Вероятно, у меня есть минимальные знания по jQuery.Показать переполнение: скрытые DIVS при нажатии

В основном это так. У меня есть страница, содержащая 10 DIVS, например # page1 to # page10. Я установил переполнение в скрытое, поэтому в окне просмотра отображается только первый DIV, # page1. Есть ли способ показать последовательный следующий и предыдущий DIV при щелчке .. скажите, что у вас есть «предыдущая» и «следующая» ссылка?

редактировать

Моя первоначальная идея состояла в том, чтобы иметь переполнение DIV скрытые и выделите DIV, но обнаружил, что решение дается @Steve является то, что мне было нужно. Для переполнения скрытого решения метод был объяснен @VisioN.

+0

Переполнение скрытые или отобразить скрытые? –

ответ

1

Во-первых, вы сказали переполнения: скрытый ..... ли вы на самом деле означает Visibilily: нет скрытых или Дисплей: нет?

Я сделал пример, используя дисплей нет.

http://jsfiddle.net/4HpXz/4/

ли в настоящее время не обрабатывает при нажатии кнопки «Следующий» на уже последний ДИВ, но вы можете либо скрыть следующую ссылку или сделать его достаточно умна, чтобы не скрыть последний DIV, если, например, нажать далее

JS

$(function(){ 

    $('.next').click(function(){ 
     $('.page.show') 
      .removeClass('show') 
      .next() 
      .addClass('show'); 
    }); 

    $('.prev').click(function(){ 
     $('.page.show') 
      .removeClass('show') 
      .prev() 
      .addClass('show'); 
    }); 

}); 

HTML

<div class="page show">Page1</div> 
<div class="page">Page2</div> 
<div class="page">Page3</div> 
<div class="page">Page4</div> 
<div class="page">Page5</div> 
<div class="page">Page6</div> 
<div class="page">Page7</div> 
<div class="page">Page8</div> 
<div class="page">Page9</div> 
<div class="page">Page10</div>​ 

CSS

.page{ 
    display: none; 
} 
.show{ 
    display: block; 
} 
​ 
+0

Этот метод в настоящее время использует класс «show» для indercate текущего видимого div. но если вы этого не сделали, вы могли бы сшить его более сложным селектором, который будет искать div с отображением «NOT BLOCK». – Steve

+0

Это был не мой оригинальный подход, но он, похоже, соответствует тому, что я хочу достичь. Я дам ему попробовать. Благодарю. –

+0

Я пробовал и, похоже, хорошо работает. Тем не менее, существует ли способ предотвратить прохождение последней страницы. Самое простое решение - это, вероятно, удалить «следующую» ссылку, но мне просто интересно узнать, возможно ли, что даже если пользователь нажмет «дальше» на последней странице, страница будет оставаться последней страницей. –

0

Вы можете сделать эффект слайда для этих div.

Например:

var firstpage = $('#container div#page1'), 
     pgwidth = firstpage.outerWidth(); 

$('.prevButton').on('click', function() { 
    firstpage.animate({ 
    'margin-left' : '-=' + pgwidth + 'px' // sliding the first div amount of its outerWidth to left 
    },300); 
}); 


$('.prevButton').on('click', function() { 
    firstpage.animate({ 
    'margin-left' : '+=' + pgwidth + 'px' // sliding the first div amount of its outerWidth to right 
    },300); 
}); 
+0

Спасибо, я попробую это. –

+0

Итак, я попробовал ваш метод. Он работает, но когда я перехожу к следующему DIV и откидываюсь назад, это не позволяет мне больше продвигаться вперед .. любое решение для этого? Спасибо –

0

Ну, если я правильно понял, вы должны взглянуть на scrollIntoView() метод.

Как вы получаете от названия, он прокручивает элемент на виду. Это довольно просто и поддерживается даже IE6.

DEMO:http://jsfiddle.net/8D2jB/

+0

Спасибо! Я пробовал все решения, и казалось, что подход Стива ближе всего к тому, что мне нужно. –

+0

OK. Однако, если вам нужно отображать элементы, которые находятся вне видимости в блоке 'overflow: hidden', тогда этот метод имеет смысл. – VisioN

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