我在頁面的頂部有2個選項卡。當單擊一個選項卡時,我希望該選項卡具有「活動」類,另一選項卡具有「非活動」類,以便用戶可以看到當前選擇的選項卡。我怎麼能用javascript/css來做這件事?Change div style onclick
<div class="tabActive">
Option 1
</div>
<div id="tabInactive">
Option 2
</div>
我在頁面的頂部有2個選項卡。當單擊一個選項卡時,我希望該選項卡具有「活動」類,另一選項卡具有「非活動」類,以便用戶可以看到當前選擇的選項卡。我怎麼能用javascript/css來做這件事?Change div style onclick
<div class="tabActive">
Option 1
</div>
<div id="tabInactive">
Option 2
</div>
另一個非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";
}
<div class="tabInactive" onclick="this.classname='tabActive'"></div>
如果使用jQuery:
$("div.tabInactive").click(function() {
$("div.tabInactive").removeClass("tabActive");
$(this).addClass("tabActive");
});
我想另一個標籤頁應該再次刪除它的活動類(在你的非jQuery示例中)。 – pimvdb
+1包括非jQuery的答案,但JS應該[unobtrusive](http://en.wikipedia.org/wiki/Unobtrusive_JavaScript) –
試試這個使用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>
這是我的猜想:
$('.tabActive, #tabInactive').click(function() {
$(this).toggleClass('active');
}
給喲烏爾標籤類 「標籤」 的... 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
};
}
這裏是不使用任何的jQuery的解決方案!它確實認爲只有2個標籤認爲。
<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';
}
這是一個很好的例子,但只能在兩個選項卡上工作。如果添加了其他選項卡,則無論如何都不會有效。 – brenjt
也許可以使用':target' CSS選擇器重新創建 - 唯一的缺點就是找出初始狀態。 – Nightfirecat
你使用就像一個圖書館jQuery的? – pimvdb
你有沒有嘗試過任何東西呢? – Dan
對不起,這個項目 – Mike