1. 程式人生 > >jQuery實現欄目切換

jQuery實現欄目切換

這裡寫圖片描述
如圖要實現不同欄目的切換,點選某個標題就切換對應的欄目塊,這裡我們利用jQuery來實現
我們的總體的思路是實現板塊的隱藏和顯示,點選相應的板塊,就將對應的板塊顯示出來,點選另外一個就隱藏,那麼這裡我們每一個模組都有顯示框,如何實現點選時事,就找到對應的時事的模組,是我們需要解決的問題。
比如我們點選時事的時候,通過時事的id來獲取到時事對應的模組,那麼這裡我們可以設定時事的標題和模組的id相同。
那麼我們先將大概的框架寫出來
大概框架
具體的HTML和CSS程式碼如下

<ul>
            <li>時事</li>
            <li
>
體育</li> <li>政治</li> </ul> <div>時事欄目</div> <div>體育欄目</div> <div>政治欄目</div>

CSS程式碼

ul{
    list-style: none;
    margin-bottom: 0;
}
ul li{
    width: 100px;
    height: 50px;
    border: 1px solid gray
; background-color: lightgray; display: inline-block; line-height: 50px; text-align: center; font-family: "微軟雅黑"; font-size: 18px; }
div{ width: 310px; height: 200px; border: 1px solid grey; text-align: center; line-height: 200px; margin-left: 40px; margin-top
: 0px
; position: relative; }

下面我們先給每個li一個點選事件,點選不同的欄目主題時相應的li的背景顏色發生變換,

$(function(){
    $("li").click(function(){      
        $(this).css("background-color","aquamarine");
    })
})

這裡寫圖片描述
由於這裡我們需要點選下一個li元素之前需要將所有的li的背景顏色重置為最初的顏色。所以還需要新增如下程式碼

$(function(){
    $("li").click(function(){
        $("li").css("background-color","lightgray")
        $(this).css("background-color","aquamarine");
    })
})

那麼現在我們點選下一個li元素的時候前面的li的背景就已經被重置了
這裡寫圖片描述
接下來我們的任務就是點選li時顯示對應的div
那麼怎樣找到正確的div呢,這裡我們需要通過id來尋找
通過this找到li的id,如果li的id和div的id相等,就替換

 id= $(this).attr("id");

這裡我們通過attr(“id”);屬性來查詢對應的li的id,這裡的this返回的時點選的li的jQuery物件。
我們同樣可以通過控制檯來檢驗一下是否能夠獲取到正確的id
這裡寫圖片描述
可以看到我們點選對應的li,返回的對應的li的id
拿到了點選的li元素的id之後我們就可以和div的id進行匹配。
那麼如何遍歷所有的div呢,這裡我們可以通過$(“div”).each(index,val)進行遍歷

  $("div").each(function(i,val){
            console.log(i);
            console.log(val);
        })

i為div陣列的索引值,val為整個div的標籤
這裡寫圖片描述
那麼這裡我們點選依次li,就返回所有的div的索引值和對應的標籤
這裡我們有個投機取巧的方式,是把li的id設定為和div的index的下標相同分別對應為0,1,2下面我們在遍歷div的時候如果div的陣列下標和li的id相同,那麼我們就進行相應的div的顯示,否則就隱藏,這裡我們還要注意將li的第二個元素和最後一個元素$(“li:eq(1),li:last-child”).hide;進行隱藏。

$("div:eq(1),div:last-child").hide();//預設為隱藏

同時還要注意遍歷div的時候,這裡的this代表的是當前的div,而點選事件的中的this是當前選中的li,

 $("div").each(function(i,val){
//          console.log(i);
//          console.log(val);
         if(id== i){
            $(this).show();
         }else{
            $(this).hide();
         }

        })

同時還要注意利用(div).each(function(i,val))eachfunctiondiv(this)代替
那麼現在我們總體的額效果就已經實現了
這裡寫圖片描述