麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JavaScript > 正文

jQuery之選項(xiàng)卡的簡(jiǎn)單實(shí)現(xiàn)

2019-11-20 21:02:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

jQuery實(shí)現(xiàn)選項(xiàng)卡功能。首先將界面搭建好。

有導(dǎo)航頭tab_menu,還有內(nèi)容tab_box。

要實(shí)現(xiàn)的效果就是,點(diǎn)擊后,將相應(yīng)的內(nèi)容顯示出來(lái),其他內(nèi)容隱藏掉。

同時(shí)為了展現(xiàn)選中狀態(tài),為選中的項(xiàng)添加背景,以示區(qū)別。

這一次,我自己寫(xiě)了代碼,先看html部分:

復(fù)制代碼 代碼如下:

<div class="tab">
    <div class="tab_menu">
        <ul>
            <li class="selected">時(shí)事</li>
            <li>體育</li>
            <li>娛樂(lè)</li>
        </ul>
    </div>
    <div class="tab_box">
         <div>時(shí)事</div>
         <div class="hide">體育</div>
         <div class="hide">娛樂(lè)</div>
    </div>
</div>

html中,需要一個(gè)大的div,里面有兩個(gè)子div,一個(gè)作為導(dǎo)航頭tab_menu,一個(gè)作為內(nèi)容體tab_box。css代碼負(fù)責(zé)布局html內(nèi)容。

css部分:

復(fù)制代碼 代碼如下:

*{
margin:0;
padding:0;
}
.tab{
    width:240px;
    margin:50px;
    /*border:1px solid;*/
}
.tab_menu{
    clear:both;
}
.tab_menu li{
    float:left;  //將導(dǎo)航頭左飄
    text-align:center;  //將文字居中
    list-style:none;  //去除標(biāo)記符號(hào)
    background:#F1F1F1; //設(shè)置默認(rèn)背景色
    border:1px solid #898989; //設(shè)置邊框色
    margin-right:4px; //每個(gè)li之間的距離為4px
    cursor:pointer;  //鼠標(biāo)浮上之后,會(huì)有小手的標(biāo)示出現(xiàn)
    padding:1px 6px; //控制li的內(nèi)部距離
    border-bottom:none;

}
.tab_menu li.hover{
    background:#DFDFDF;
}
.tab_menu li.selected{//為選中的選項(xiàng)加背景與顏色
    color:#FFF;
    background:#6D84B4;
}
.tab_box{
    clear:both; //清楚float效果的影響
    height:100px; //設(shè)置高度為100px
    border:1px solid #898989; //設(shè)置內(nèi)容體的邊框樣式
}
.hide{//隱藏需要隱藏的內(nèi)容div
    display:none;
}

待布局完成之后,進(jìn)行jQuery的動(dòng)作:
復(fù)制代碼 代碼如下:

<script type='text/javascript'>
$(function(){
    //1.點(diǎn)擊時(shí)改變css屬性,移除之前的selected選項(xiàng),添加新的selected選項(xiàng)
    //2.隱藏之前的div層,顯示對(duì)應(yīng)得div層
    //為導(dǎo)航中的li注冊(cè)點(diǎn)擊事件
    var $div_li = $(".tab_menu ul li");
    $div_li.click(function(){
        $(this).addClass('selected').siblings().removeClass('selected');
        //var index = $div_li.index(this);
        //$("div.tab_box > div").eq(index).show().siblings().hide();
        var text = $(this).text();
        if(text=='時(shí)事')
        {
            $('.tab_box div:contains("時(shí)事")').removeClass('hide').siblings().addClass('hide');
        }
        if(text=='體育')
        {
            $('.tab_box div:contains("體育")').removeClass('hide').siblings().addClass('hide');
        }
        if(text=='娛樂(lè)')
        {
            $('.tab_box div:contains("娛樂(lè)")').removeClass('hide').siblings().addClass('hide');
        }
    }).hover(function(){
            $(this).addClass("hover");
        },function(){
            $(this).removeClass("hover");
        });
});
</script>

這是我寫(xiě)的jQuery代碼,我的思路是,點(diǎn)擊選項(xiàng)卡時(shí),添加selected樣式,同時(shí)移除兄弟選項(xiàng)卡的selected樣式。

再一個(gè),如何才能觸發(fā)相應(yīng)的tab_box中的內(nèi)容的隱藏與顯示呢?

我發(fā)現(xiàn)了他們有相對(duì)應(yīng)的內(nèi)容,就是選項(xiàng)頭為“實(shí)事”的對(duì)應(yīng)的選項(xiàng)體也為“實(shí)事”,選項(xiàng)頭為“體育”的對(duì)應(yīng)的選項(xiàng)提也為“體育”等。

我就想,先獲取選項(xiàng)頭的內(nèi)容,做出判斷,當(dāng)它為不同的值時(shí),就觸發(fā)不同的效果。

效果是實(shí)現(xiàn)了,可是漏洞很明顯,因?yàn)椴⒉皇撬械倪x項(xiàng)卡都是標(biāo)題與內(nèi)容體相對(duì)應(yīng)。

再看看下面的代碼:

復(fù)制代碼 代碼如下:

<script type="text/javascript" >
//<![CDATA[
    $(function(){
        var $div_li =$("div.tab_menu ul li");
        $div_li.click(function(){
            $(this).addClass("selected")            //當(dāng)前<li>元素高亮
                   .siblings().removeClass("selected");  //去掉其它同輩<li>元素的高亮
            var index =  $div_li.index(this);  // 獲取當(dāng)前點(diǎn)擊的<li>元素 在 全部li元素中的索引。
            $("div.tab_box > div")       //選取子節(jié)點(diǎn)。不選取子節(jié)點(diǎn)的話,會(huì)引起錯(cuò)誤。如果里面還有div
                    .eq(index).show()   //顯示 <li>元素對(duì)應(yīng)的<div>元素
                    .siblings().hide(); //隱藏其它幾個(gè)同輩的<div>元素
        })
    })
//]]>
</script>

這里的處理就特別的巧妙,它通過(guò)獲取li的索引,對(duì)選項(xiàng)體進(jìn)行處理。它巧妙的利用了一個(gè)隱藏的對(duì)應(yīng)關(guān)系,就是索引值。

這樣即便選項(xiàng)頭與選項(xiàng)體內(nèi)容不對(duì)應(yīng),一樣可以實(shí)現(xiàn)聯(lián)動(dòng)效果。

通過(guò)這次練習(xí),我覺(jué)得,自己先動(dòng)腦子想一想還是很好的。可以發(fā)現(xiàn)思路的差異,才能夠發(fā)現(xiàn)不足,知道差距。有時(shí)候甚至你的思路會(huì)更好呢!

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久久久亚洲视频 | 黄色网址免费在线播放 | 92自拍视频| 国产精品久久久久久久不卡 | 国产91丝袜在线播放0 | 91色成人 | 99欧美视频 | 黄色av免费网站 | 午夜精品久久久久久久爽 | 欧美 国产 综合 | 欧美久久久一区二区三区 | 黄网站在线免费 | av在线播放亚洲 | 久久精品小短片 | 毛片118极品美女写真 | 免费一级毛片在线播放不收费 | 国产亚洲网 | 99最新地址 | 黄网站色成年大片免费高 | 国产美女视频一区 | 孕妇体内谢精满日本电影 | 欧美另类综合 | 久草在线手机视频 | 成人在线视频播放 | 国产精品免费看 | 香蕉成人在线视频 | 天天干导航 | 国产精品久久久久久久久久iiiii | 久久久一区二区 | 在线 日本 制服 中文 欧美 | 久久久久北条麻妃免费看 | 亚洲免费看片网站 | 亚洲综合视频一区 | 精品一区二区三区欧美 | 成人在线视频播放 | 在线免费观看毛片视频 | 欧美三级短视频 | 成人黄色小视频在线观看 | 国产精品美女久久久久久不卡 | 999精品久久久 | 欧美在线观看视频一区 |