2012-04-11 64 views
0

我有一種情況,在jQuery中有「嵌套」切換語句。嵌套的jQuery切換語句

我有一堆選擇允許用戶設置一天爲打開或關閉。

然後我有一個選擇,允許用戶顯示所有日子的細節。詳細信息默認隱藏(這是導致我的問題)。

如果用戶設置一天關閉,我不想顯示那天當用戶選擇顯示所有日子的詳細信息。例如。如果星期一設置爲關閉,並且本週其餘時間打開並且用戶選擇「顯示詳細信息」,則會顯示除星期一以外的所有日子的詳細信息。

這工作正常,如果我開始顯示的所有細節(你可以隱藏和顯示的細節和封閉的天不顯示)。但默認情況下,細節是隱藏的,如果用戶設置了幾天關閉,然後顯示細節,它會顯示所有日子的細節,甚至是關閉的細節。

當包含div的切換被改變時,是否有一種簡單的方法來保持「嵌套」切換?

我已經把這種情況在這個jFiddle的一個粗糙的例子。

http://jsfiddle.net/yTt3t/16/

感謝您的任何援助。

回答

1

事實上,問題在於,您更改可見性的元素的父元素最初是隱藏的。我假設jQuery執行一些優化以避免不必要的CSS和DOM更改。

如果你傳遞一個布爾值.toggle()[docs],其中,海事組織,更好反正它的工作原理雖然,它確保了元件的狀態永遠是正確的:

$("#monday_select").change(function(){ 
    $("#monday_details").toggle(this.value === 'Open'); 
}); 

$("#tuesday_select").change(function(){ 
    $("#tuesday_details").toggle(this.value === 'Open'); 
}); 

的參數控制元素是否應該顯示(true)或隱藏(false)。

DEMO

+0

非常好,這似乎工作得很好。我沒有意識到你可以傳遞一個值來切換。謝謝。 – salonMonsters 2012-04-11 00:35:31

+0

查看文檔http://api.jquery.com/toggle/,第三個定義。 – 2012-04-11 00:38:51