2011-10-06 61 views
3

我不確定這是否是一個「回調」,我需要或不是,但基本上我試圖仿效.click的.hover()效果函數的逆轉()效果,這是可能的,所以基本上,如果用戶再次點擊鏈接,剛剛發生的反向,即div關閉而不是打開,會發生。是否可以使用.click() ?jQuery切換.click()函數

$(document).ready(function(){ 
    $('.content_accrd').css({"height":"0px"}); 
$('.paneltop').click(function() { 
    $(this).css({"background-position":"0px -21px"}) 
    .siblings().animate({"height":"100px"}, 200) 
}, function() { 
$(this).css({"background-position":"0px 0px"}) 
    .siblings().animate({"height":"0px"}, 200); 

}) 
}) 

回答

5

使用.toggle(),不.click()

說明:將兩個或多個處理程序綁定到匹配的元素,以便在其他點擊上執行。

+0

還有,就是在技術上我想要的東西?回調?還是被稱爲別的東西? –

+0

我不認爲「回調」是你想要的。回調(無論如何都是JavaScript)是一個稍後要執行的功能。代碼中的3個匿名函數都是回調的例子。第一個是在DOM準備就緒時執行的回調。 –

+0

關於JS回調的簡要介紹:http://recurial.com/programming/understanding-callback-functions-in-javascript/([Wikipedia article]](http://en.wikipedia.org/wiki/Callback_ %28computer_programming%29)可能有點不透明...) –

0

不,點擊動作總是會做同樣的事情。如果你想要它有交替效果,你將不得不檢查元素的當前狀態,並相應地切換到新的狀態。

這看起來是這樣的:

$('#foo').click(function() { 
    if ($('#foo').is(':visible')) { 
     $('#foo').hide(); 
    } else { 
     $('#foo').show(); 
    } 
    }); 

取決於你正在努力實現這可能是你想要的任何變化的影響。

+0

1.你在哪裏看到ID爲「foo」的元素? 2.爲什麼你會用這個而不是['.toggle()'](http://api.jquery.com/toggle/)? -1。 –

+0

1.只是一個可以應用於任何元素的演示。 2.是的,閱讀OP的問題,他們特別要求能夠扭轉行動(類似於鼠標懸停效果)。這可能不一定是顯示/隱藏切換,而是任何類型的切換。可能由我們需要跟蹤元素當前狀態的多個觸發元素引起。 – njr101

+0

如果頁面上有多個元素可能導致狀態更改,則切換將不起作用。唯一確定的方法是查詢當前狀態並切換到相反的狀態。對不起,你覺得這是不正確的,值得downvote。但是每個人都有權獲得他們的意見。 – njr101

1

嘗試切換

$(".paneltop").toggle(function(){ 
    //first click happened 
},function(){ 
    //second click happened 
}); 
+0

有人可以解釋他/她downvote所以我可以改善我的答案? – genesis

+0

這將是我的downvote - 對不起,我要評論,但受到了側面影響。我低估了你的原始答案,因爲這顯然是錯誤的。你爲什麼不編輯它?無論如何,在我已經發布(並且低估你的錯誤答案)之後,它與我的答案相同。 –

+0

@MattBall:我已經刪除了它,因爲它很久以前就被downvoted了,而獲得upvoted的機會非常小。 – genesis