2011-07-11 84 views
2

我在頁面的頂部有2個選項卡。當單擊一個選項卡時,我希望該選項卡具有「活動」類,另一選項卡具有「非活動」類,以便用戶可以看到當前選擇的選項卡。我怎麼能用javascript/css來做這件事?Change div style onclick

<div class="tabActive"> 
Option 1 
</div> 

<div id="tabInactive"> 
Option 2 
</div> 
+4

你使用就像一個圖書館jQuery的? – pimvdb

+0

你有沒有嘗試過任何東西呢? – Dan

+0

對不起,這個項目 – Mike

回答

2

另一個非jQuery的解決方案可能是有兩個以上div工作如下:

function changeClass(elClass) { 
    var divsLenght = document.getElementsByTagName("div").length; 
    for (var i = 0; i < divsLenght; i++) { 
    document.getElementsByTagName("div")[i].className = "tabInactive"; 
    } 
    elClass.className = "tabActive"; 
} 

演示:http://jsbin.com/opetec/2

+0

如何防止更改頁面上的所有其他div? – Mike

+0

@Mike在每個'div'中添加一個'class',例如菜單,並獲取它們的長度。演示:http://jsbin.com/opetec/4 – Sotiris

+0

非常感謝很多人,真的很感激它 – Mike

1
<div class="tabInactive" onclick="this.classname='tabActive'"></div> 

如果使用jQuery:

$("div.tabInactive").click(function() { 
    $("div.tabInactive").removeClass("tabActive"); 
    $(this).addClass("tabActive"); 
}); 
+0

我想另一個標籤頁應該再次刪除它的活動類(在你的非jQuery示例中)。 – pimvdb

+0

+1包括非jQuery的答案,但JS應該[unobtrusive](http://en.wikipedia.org/wiki/Unobtrusive_JavaScript) –

0

試試這個使用jQuery

<div class="tab active"> 
Option 1 
</div> 

<div class="tab"> 
Option 2 
</div> 

<script> 
$(function(){ 
    $(".tab").live("click", function(){ 
     $(".tab").removeClass("active"); 
     $(this).addClass("active"); 
    }); 
}); 
</script> 
-1

這是我的猜想:

$('.tabActive, #tabInactive').click(function() { 
    $(this).toggleClass('active'); 
} 
1

給喲烏爾標籤類 「標籤」 的... HTML:

<div class="tab"> 
... 
</div> 
<div class="tab"> 
... 
</div> 

JS:

function getByClass(_class, elem) { 
    var i, result = [], elems = document.getElementsByTagName("div"); //get the elements 
    for (i = 0; i < elems.length; i++) { 
     if (elems[i].className.indexOf(_class) !== -1) { //if the elements have the class passed in, add it to the result array 
      result.push(elems[i]); 
     } 
    } 
    return result; 
} 
var i, tabs = getByClass("tab", "div"); //get all divs with class tab 
for (i = 0; i < tabs.length; i++) { //for each tab... 
    tabs[i].onclick = function() { //wire up it's click event... 
     //to clear the other tabs... 
     var j; 
     for(j=0; j < tabs.length; j++) { 
      tabs[j].className = tabs[j].className.replace(" active", ""); 
     } 
     this.className += " active"; //where active is a class predefined in the CSS 
    }; 
} 

http://jsfiddle.net/thomas4g/pqMq2/12/

1

這裏是不使用任何的jQuery的解決方案!它確實認爲只有2個標籤認爲。

http://jsfiddle.net/nYpV3/

<div id="tab1" onclick="setToActive(this, 'tab2');"> 
Option 1 
</div> 

<div id="tab2" onclick="setToActive(this, 'tab1');"> 
Option 2 
</div> 

function setToActive(me, otherId){ 

    me.className='active'; 
    document.getElementById(otherId).className='inactive'; 
} 
+2

這是一個很好的例子,但只能在兩個選項卡上工作。如果添加了其他選項卡,則無論如何都不會有效。 – brenjt

+0

也許可以使用':target' CSS選擇器重新創建 - 唯一的缺點就是找出初始狀態。 – Nightfirecat