2011-06-30 109 views
0

我正在構建一個網站頁面,其中有16項服飾。如何使用jQuery切換元素?

我想要一個簡單的文本導航,可以選擇顯示和隱藏男士,女士和全部產品。

導航

<ul class="sortNav"> 
<li class="first">View:</li> 
<li class="men button">Men</li> 
<li class="women button">Women</li> 
<li class="all button active">All</li> 
</ul> 

產品編號

<span class="prod men">Guys shirt</span> 
<span class="prod men">Guys Pant </span> 
<span class="prod women">Girls Pant</span> 
<span class="prod women">Girls Pant</span> 

棘手的部分
只有一個按鈕,可以 「主動」。並且只有該類可見(一個或兩個)纔會被觸發。

在此先感謝。

謝謝!有點結合了這兩個回答。檢查了這一點...

$('.products li.prod').toggle(true); 

$('.sortNav li.button').click(function() { 
    $('.sortNav li.button').removeClass('active'); 
    $(this).addClass('active'); }); 

$('.sortNav li.men').click(function() { 
    $('.products li.prod').toggle(false); 
    $('.products li.men').toggle(true); }); 

$('.sortNav li.women').click(function() { 
    $('.products li.prod').toggle(false); 
    $('.products li.women').toggle(true); }); 

$('.sortNav li.all').click(function() { 
    $('.products li.prod').toggle(true); 
+0

所以,你想從每個人收屍'active'類? – Korcholis

+0

我以爲他只是想根據他們點擊的ul切換他顯示的產品 –

+0

那麼,沒有任何單一的答案接受?沒有你的問題嗎? – Korcholis

回答

2

我碾壓一點點的代碼,但你也應該改變李項

HTML:

<ul class="sortNav"> 
<li class="first">View:</li> 
<li section="mens" class="men button">Men</li> 
<li section="womens" class="women button">Women</li> 
<li section="all" class="all button active">All</li> 
</ul> 

<div id="all" class="section">All Clothing</div> 
<div id="mens" class="section">Mens Clothing</div> 
<div id="womens" class="section">Womens Clothing</div> 

JS:

$(document).ready(function(){ 
    $('li.button').click(function(){ //listens to each element li with class button 
     $('li.button').removeClass('active'); //removes 'active' class from all of them 
     $(this).addClass('active'); //adds the class to this one 

     $('.section').toggle(false); 
     $('#'+$(this).attr('section')).toggle(true); 
    }); 

    $(".section").toggle(false); 
}); 

如您所見,我添加了一個部分屬性,您可以將其指定爲切換(true)作爲ID。這有點危險,但它有效。

+0

是的,這聽起來是正確的......那麼添加顯示/隱藏產品呢? – Buildingbrick

+0

@Buildingbrick結帳我的例子詳細說明如何顯示和隱藏 –

+0

@Buildingbrick看我的Edit2。順便說一句,http://jsfiddle.net/SLbpk/ – Korcholis

1

退房這個js小提琴:http://jsfiddle.net/9kL7q/3/*新小提琴

HTML:

<ul class="sortNav"> 
<li class="first">View:</li> 
<li id="men" class="men button">Men</li> 
<li id="women" class="women button">Women</li> 
<li id="all" class="all button active">All</li> 
</ul> 

<div id="all" class="section">All Clothing</div> 
<div id="men" class="section">Mens Clothing</div> 
<div id="women" class="section">Womens Clothing</div> 

的Javascript:

$(".section").not("#all").toggle(false); 

$(".section").click(function(){ 
    $(".section").toggle(false); 
    $("#" + $(this).attr("id")).toggle(true); 
}); 
+0

有沒有一種方法來正常化呢?或者將代碼放到一個可以用於所有三個按鈕的單一功能上? – Buildingbrick

+0

@Buildingbrick我更新了小提琴,這段代碼給它看看 –

+0

看起來不錯!但是「全部」實際上只是「男人」和「女人」,所以擁有全部「部分」將是多餘的......對嗎? – Buildingbrick

0

@ kmb385:我固定的jQuery選擇爲您作出點擊「男裝」和「女裝」工作http://jsfiddle.net/9kL7q/2/

+0

這也會起作用。以前從未使用「切換(false)」,通常使用「hide()」。由於我們使用切換作爲事件,因此我認爲切換效果更好。 – Buildingbrick

0
$(document).ready(function() { 
    $('.sortNav li.button').click(function() { 
     // Set this button as active 
     $('.sortNav li.button').removeClass('active'); 
     $(this).addClass('active'); 

     // Show and hide items that do or don't match this button's classes 
     // (.prod.all won't get messed with, but you could make the HTML say 
     // 'class="prod men women"' instead and it should work) 
     $('.prod.women').toggle($(this).hasClass('womens')); 
     $('.prod.men').toggle($(this).hasClass('mens')); 
    }); 
}); 

與HTML使用,看起來像這樣:

<ul class="sortNav"> 
    <li class="first">View:</li> 
    <li class="mens button">Men</li> 
    <li class="womens button">Women</li> 
    <li class="mens womens button active">All</li> 
</ul> 

<div class="prod all">an item for everyone</div> 
<div class="prod women">Womens item</div> 
<div class="prod men">Mens item</div> 
<div class="prod men">More Mens stuff</div> 
<div class="prod women">More Womens stuff</div> 
+0

.hasClass()事件的用途是什麼? – Buildingbrick

+0

它測試元素(本例中的按鈕)在其CSS類中是否具有「男士」或「女士」。代碼將採用任何具有「prod」和「men」類的元素,並且(因爲「toggle」的工作方式)顯示它,如果*按鈕*具有「mens」類,則將其隱藏。與女性的東西類似的故事。做這項工作的關鍵是爲「全部」按鈕提供「男士」和「女士」類 - 這使得兩個'hasClass'調用返回'true',從而使所有內容都顯示出來。 – cHao

+0

順便說一句,作爲參考,'.hasClass'不是一個事件。這是一種方法(基本上,是一個對象上的函數)......在這種情況下,jQuery對象(從$('whatever')'得到的東西)繼承的對象。像.click這樣的東西也是方法。 jQuery恰好使用它們來連接事件處理程序並觸發事件。 – cHao