2012-03-26 181 views
5

我有一個按鈕,當切換顯示/隱藏一個div('.reportOptions'),這工作得很好。JQuery - 重置切換狀態

$('.reportOptions').click(function(e){ 
    e.stopPropagation(); 
}); 


$('.requestOptions').toggle(
    function(){ 
     $(this).parent().find('.reportOptions').css('display','block'); //show request options 
    },function(){ 
     $('.reportOptions').css('display','none'); //hide all request oprtions menus 
    } 
); 

同一div也可以通過點擊遠離它做隱藏在下面的

$(document).click(function(){ 
    $('.reportOptions').css('display','none'); 
    $('.requestOptions').toggle(even); 
}); 

我有最後一個函數的問題是,如果執行它,我必須雙擊resuestOptions按鈕以再次顯示div。

我想知道的是,如果有什麼方法可以在不必更改切換功能的情況下重置切換狀態。

回答

0

看一看的文檔jQuery的切換方法:http://api.jquery.com/toggle/

您可能還需要花點時間通過它進一步理解爲有展()和隱藏()方法。您不應該使用css('display','none')來顯示和隱藏元素,因爲show和hide方法將爲您處理所有這些,並且在您閱讀代碼時不會引起混淆。

我想你可能已經推翻了這種情況。試試這個:

$('.reportOptions').click(function(e){ 
    e.stopPropagation(); 
}); 


$('.requestOptions').click(
    function(e){ 
     $(this).parent().find('.reportOptions').show(); //show request options 
     $('.requestOptions').hide(); //hide all request oprtions menus 
     e.stopPropagation(); 
    } 
); 


$(document).click(function(){ 
    $('.reportOptions').hide(); 
    $('.requestOptions').show(); 
}); 

基本上你要綁定一個click函數來顯示div和隱藏的按鈕,點擊功能,它可以隱藏DIV,並顯示該按鈕的文檔的按鈕。點擊按鈕和div停止傳播(這是您之前在按鈕中丟失的內容),以便單擊這些元素時文檔點擊處理程序不會觸發。

+0

這是行不通的,我想你可能已經明白我的問題,但感謝嘗試反正 – 2012-03-26 20:21:27

+0

誠然,這是一個很難理解你正在嘗試你的代碼和你的描述之間的事情。你能否更具體一些關於「這不行」?如果我不知道你在想什麼做什麼或沒有工作做,我不能很好地幫助你:P – Brian 2012-03-26 20:22:56

+0

好,你寫了一個矛盾的第二個功能,你的表現,然後隱藏.reportOptions div,我基本上想要做的是讓切換函數知道.reportOptions div已關閉,因爲此刻最後一個函數不會這樣做,所以這意味着我必須在執行最後一個函數後雙擊切換按鈕。 – 2012-03-26 20:32:11

0

不是直接更改CSS,而是添加一個類名(並在CSS中定義它)。然後刪除班級名稱即可恢復正常。