2013-06-28 333 views
-6

我正在編寫一個網站,其中有5個divs點擊鏈接活動

<div class="one"></div> 
<div class="two"></div> 
<div class="three"></div> 
<div class="four"></div> 
<div class="five"></div> 

某處的網站上,我想提出兩個環節。

<a href="">PREVIOUS</a> 
<a href="">NEXT</a> 

我需要「上一個鏈接」(點擊時)向我顯示之前的div,並且它應該與「下一個鏈接」完成相同的操作。

+1

從這裏瞭解:HTTP:// jsfromhell。 COM/classes/data-slider – 2013-06-28 13:02:44

+0

發佈一些嘗試過的代碼.. – bugwheels94

+1

「before」作爲它在DOM之上的元素,或者「之前」,就像在當前元素之前單擊並顯示的元素一樣? – adeneo

回答

4

在這裏你去,這是一個例子:

JSFIDDLE

HTML:

<button id="prev" disabled="disabled">Prev</button> 
    <button id="next">Next</button> 
    <hr /> 

<div id="main"> 
    <div id="div1" class="first current">Div 1</div> 
    <div id="div2">Div 2</div> 
    <div id="div3" class="last">Div 3</div>  
</div> 

JQUERY:

$('#next').click(function() { 
     $('.current').removeClass('current').hide() 
      .next().show().addClass('current'); 
     if ($('.current').hasClass('last')) { 
      $('#next').prop('disabled', true); 
     } 
     $('#prev').prop('disabled', false); 
    }); 

    $('#prev').click(function() { 
     $('.current').removeClass('current').hide() 
      .prev().show().addClass('current'); 
     if ($('.current').hasClass('first')) { 
      $('#prev').prop('disabled', true); 
     } 
     $('#next').prop('disabled', false); 
    }); 
+0

謝謝!這工作! – piruchex

+0

@piruchex請按我的答案按 – Tredged

+1

當你解決所有的錯誤時,我會喜歡你的答案。將'attr()'改爲'prop()'並使用'prop('disabled',false)'not'null'。 – adeneo

1

您在當前類在你的div的也許應該是ID的,讓所有這些div的一個共同的類(我也添加了ID的你[R鏈接):

<div id="one" class="divCycle"></div> 
<div id="two" class="divCycle"></div> 
<div id="three" class="divCycle"></div> 
<div id="four" class="divCycle"></div> 
<div id="five" class="divCycle"></div> 

<a href="#" id="divPrev">PREVIOUS</a> 
<a href="#" id="divNext">NEXT</a> 

然後,我們可以添加點擊處理程序應用到按鈕:

$("#divPrev").click(function() { 
    var visibleDiv = $(".divCycle:visible"); 

    //verify there is a previous div 
    if (visibleDiv.prev(".divCycle").length) { 
     visibleDiv.prev(".divCycle").show(); 
     visibleDiv.hide(); 
    } 
}); 

$("#divNext").click(function() { 
    var visibleDiv = $(".divCycle:visible"); 

    //verify there is a next div 
    if (visibleDiv.next(".divCycle").length) { 
     visibleDiv.next(".divCycle").show; 
     visibleDiv.hide(); 
    } 
}); 
1

給錨ID的匹配jQuery方法,而且很容易:

var elems = $('.one, .two, .three, .four, .five'); 

$('#prev, #next').on('click', function(e) { 
    e.preventDefault(); 
    var n = elems.filter(':visible').hide()[this.id](); 
     n = elems.is(n) ? n : this.id=='next' ? elems.first() : elems.last(); 
    n.show(); 
}); 

FIDDLE

+0

'[這個。id]()'看起來像一個可維護性夢魘*不寒而慄* – xec

+0

嗯,你知道他們說什麼:*總是編碼,就好像最終維護你的代碼的人將是一個暴力的精神病患者誰知道你住的地方。這裏發佈的不是我看過的最具可讀性的,就是我所說的:)一個新穎的想法,當然... – xec

+0

因爲我是最終維護我的代碼的人,這不是問題,它更重要我可以閱讀任何其他答案。括號清楚地表明ID用作方法,而事件處理程序的ID在選擇器中,所以如果你知道javascript是如何工作的,那麼所有的東西都在那裏。 – adeneo

0

或者如果你想滾動到所需的div,你可以使用jQuery的scrollTo()

0

在HTML

<button id="prev" disabled="disabled">Prev</button> 
    <button id="next">Next</button> 
    <hr /> 

<div id="main"> 
    <div id="div1" class="first current">Div 1</div> 
    <div id="div2">Div 2</div> 
    <div id="div3">Div 3</div> 
    <div id="div2">Div 4</div> 
    <div id="div3" class="last">Div 5</div> 
</div> 

將其放置在JScript

$('#next').click(function() { 
    $('.current').removeClass('current').hide() 
     .next().show().addClass('current'); 
    if ($('.current').hasClass('last')) { 
     $('#next').attr('disabled', true); 
    } 
    $('#prev').attr('disabled', null); 
}); 

$('#prev').click(function() { 
    $('.current').removeClass('current').hide() 
     .prev().show().addClass('current'); 
    if ($('.current').hasClass('first')) { 
     $('#prev').attr('disabled', true); 
    } 
    $('#next').attr('disabled', null); 
}); 

而在你的CSS

#div2,#div3,#div4,#div5{ 
    display:none; 
}