2013-08-07 122 views
-1

我一直在研究這個問題,許多答案都涉及切換功能。問題是我希望隨時顯示一個元素,如果使用切換(這可能會意外地點擊某個元素並且它消失),這是不可能的。所以我這樣做:只顯示一個元素並隱藏沒有切換鍵的其他元素

$(document).ready(function(){ 
    $("#goals").hide(); 
    $("#History").addClass("selected"); 

    $("#History").click(function(e){ 
     e.preventDefault(); 
     $("#history").show(); 
     $("#goals").hide(); 
     $("#History").addClass("selected"); 
     $("#Goals").removeClass("selected"); 

    }); 
    $("#Goals").click(function(e){ 
     e.preventDefault(); 
     $("#goals").show(); 
     $("#history").hide(); 
     $("#Goals").addClass("selected"); 
     $("#History").removeClass("selected"); 
    }); 
}); 

除了它太麻煩了,我敢肯定還有更好的辦法。我試圖找到只使用隱藏和顯示的解決方案,或者如果需求可以實現。任何幫助表示讚賞...我沒有先進的jQuery,所以請提供解釋。謝謝

+0

如果你想要一直顯示的東西,然後只是使用CSS和添加!重要,以確保它始終顯示 – Huangism

+2

你真的使用ID「歷史」和ID「歷史」,「目標」和「目標」 ?? – Archer

+2

@黃色使用'!重要'是一個壞主意。它顯示出糟糕的編程風格。 – reporter

回答

2

你可以給他們一個類..或只是結合了他們一個選擇

$(document).ready(function(){ 
    $("#goals").hide(); 
    $("#History").addClass("selected"); 
    var eles = $("#History,#Goals"); 
    eles.click(function(e){ 
     e.preventDefault(); 
     $(this).show().addClass('selected'); // show and add class to current clicked 
     eles.not(this).hide().removeClass('selected'); // hide and remove class for the other one 
    }); 
}); 

編輯:我沒有注意到,你實際上有不同的ID的

var hg = $("#history,#goals"); 
var HG = $("#History,#Goals"); 
HG.click(function(e){ 
    e.preventDefault(); 
    var el = $('#'+this.id.toLowerCase()); 
    el.show(); 
    hg.not(el).hide(); 
    $(this).addClass("selected"); 
    HG.not(this).removeClass("selected");  
}); 
+0

打我回答。 – jhorton

+0

謝謝,var HG = $(「#History,#Goals」);''工作?我只看到了括號內的一個ID /類 – user977151

+0

它將兩個jQuery對象存儲在一個集合中 - 這允許您在它們上調用jQuery方法..當您知道觸發該調用的當前元素是「this」時 - 你可以使用'HG.not(this)'將它從集合中過濾出來 - 所以現在你可以操作另一個不是'this'的元素 –