2012-05-16 36 views
24
<div class='hide'>A</div> 
<div class='hide'>B</div> 
<div class='hide' id='1'>C</div> 

我有一個函數調用showOne應隱藏所有元素,然後示出了一個使用id =「1」。Jquery的隱藏()與某些類的所有元素,除了一個

function showOne(id) { 
// Hide all elements with class = 'hide' 
$('#'+id).show(); 
} 

如何在jquery中隱藏class ='hide'的所有元素?

+2

只是一個音符 - 你不能有'id'與數字開頭,除非它是HTML5 – Bongs

回答

40

試着這麼做:

function showOne(id) { 
    $('.hide').not('#' + id).hide(); 
} 

showOne(1);​ 

演示:http://jsfiddle.net/aymansafadi/kReZn/

我雖與@TheSystemRestart同意, 「注意:不要使用只有數字ID」。

+0

+1 - 使用。不是()是一個更好的解決方案,因爲現在你不必隱藏你想顯示,然後顯示它的元素。避免「閃爍」的效果,我認爲是更好的UI體驗。 – alieninlondon

+0

'$(「皮:不是(#‘+ ID +’)」)。隱藏();'本質上是相同的太... – Fr0zenFyr

+4

我只是想花一秒鐘認識如何寫得不好的例子,對於一個總的新手,只是因爲你把你的班級'隱藏'命名爲'。hide()函數可以使人們認爲這兩者之間有聯繫。我在任何地方都能看到這種命名模式,當我學習時,通過這些例子讓我感到很痛苦。 – Edeph

4
$('div.hide').hide(300,function() { // first hide all `.hide` 
    $('#'+ id +'.hide').show(); // then show the element with id `#1` 
}); 

注意:不要使用只有數字編號。不允許。 READ THIS

+1

數字ID被允許在HTML5 - 你是否知道當前的瀏覽器不支持他們呢? – nnnnnn

0

我幾乎爲解決方案的容易程度感到慚愧,而且我在寫完問題後才發現它。只需:

$('.hide').hide(); 
+0

如果你看過一個介紹jQuery的教程(如jQuery的網站者之一),你可以瞭解所有比較常見的選擇(通過ID,類,標籤名稱選擇,並通過父/子關係等選擇),但它基本上與CSS選擇器語法相同。一旦你瞭解了這一點,決定調用哪個方法(例如,'.hide()')是最簡單的部分。 – nnnnnn

+0

不隱藏id =「1」的元素呢?你自己的回答並不完全回答你自己的問題! – Griknok

0

您可以使用隱藏所有類爲隱藏的組件。 $( '隱藏')隱藏()。

0

嘗試:

function showOne(id) { 
    $('.hide').hide(); 
    $('#'+id).show(); 
} 
3

你必須訪問由CSS類名的元素。爲此,請使用運營商

$('.hide').hide(); 

它會隱藏所有的divs。

現在顯示通過ID一個DIV;

$('#elemID').show(); 

或者你也可以做到這一點通過使用

$('.hide').eq(0).show(); 

它會顯示上課隱藏第一個div。

相關問題