2012-09-10 19 views
0

我的基本設置是使用.slideDown().hide()創建一個手風琴效果。我有一個「切換」分區,這是按鈕或者什麼被點擊.slideDown()它下面的元素,它默認是隱藏的,使用$(this).next().slideDown();如何在目標或操作元素上方關閉或.hide()和元素?

我內這樣做的if語句:if($(this).next().is(":hidden")) {Do this};,這讓我基本上都是反覆使用相同的div,全部由腳本單塊控制。這些div是垂直堆疊的:toggle div> hidden div> toggle div>隱藏div等等。

我想要做的是.hide() div上面的點擊「切換」div,這是以前隱藏,並已.slideDown()。現在可見。

我試過使用if($(this).closest('.hidden').is(':visible')) {Do this};,其中'hidden'是選定元素的目標元素,然後.hide()沒有成功。

我已經.closest()讀了,這就是爲什麼我試圖使用它用於此目的。我也試圖直接定位div,但是使用同一個div的多個實例,我需要區分哪個div相對於被點擊的div。

這裏是我工作的項目:http://www.jeremiahdesign.com/GD491/weekSix/portfolio/index.html

這是一類項目。 Anyinsight將不勝感激。

+0

注意前面的鏈接:'.closest'只能通過祖先,沒有兄弟姐妹穿越。 –

回答

0

在jQuery的.prev()看看:

$(this).prev().slideUp() 
0

如果我很好理解,你可以使用下面的指令得到你想要的確切格:

$(this).prevAll("div.ex-link") 

這讓你讓你打開

+0

@ Gabrik - 謝謝。這工作,但它造成了另一個問題。當它打開時,我正在滾動到打開的div。我的頁面仍然滾動,但太多了。 –

+0

@ Gabrik - 我應該延遲滾動,直到前一個div完成關閉嗎? –

+0

@加布裏克 - 想通了! \ o.o /。感謝大家的信息。我不得不改變滾動的目標。否則,當新的div展開並且前一個崩潰時,由於上面的div被移除,所以打開的div(原始滾動目標)消失了。再次感謝。喬 –