2011-12-19 93 views
0

這段代碼有什麼問題嗎?試了百次。Jquery點擊一個鏈接顯示一個框,然後關閉一個框

<a href="#comment_magic" id="comment_magic_1" name="comment_magic_1" class="u">0 comments</a> 
<div id="open_sesame_1" style="display:none" class="open_sesame_1"> 
test 
</div> 

的jQuery:

$("#comment_magic_1").click(
function() { 
$("#open_sesame_1").slideDown(); 
}, function() { 
$("#open_sesame_1").slideUp(); 
}); 
+0

你想通過將兩個函數作爲參數傳遞給點擊處理程序來完成什麼? .click()接受無參數,調用處理程序,一個參數,綁定處理程序或兩個參數,其中第一個是eventdata數組,第二個參數是傳遞給它的處理程序。 –

+0

你知道'slideToggle()'嗎?我認爲那是你正在尋找的。 – David

回答

1

click() doesn't需要兩個事件處理程序。

。點擊(處理程序(eventObject)傳遞)

處理程序(eventObject)傳遞每個觸發事件的時間來執行的功能。

您可以改爲使用slideToggle()

$("#comment_magic_1").click(function() { 
    $("#open_sesame_1").slideToggle(); 
}); 
+0

感謝您的信息;我從來沒有意識到它不支持兩個點擊處理程序。 Repped。 – TheBlackBenzKid

1

試試這個:

$("#comment_magic_1").click(function() { 
     $("#open_sesame_1").slideToggle(); 
}); 

小提琴:http://jsfiddle.net/adeneo/hxS3d/

+0

謝謝。我也非常喜歡slideToggle,應該意識到在這裏它會更好,因爲鏈接是一個,並且它一箭雙鵰。其他人都複製了。 – TheBlackBenzKid

+0

@TheBlackBenzKid不客氣! – adeneo

1

如果我得到你的權利,你想要的效果基本show來觸發第二次點擊,您無法將第二個處理函數傳遞給點擊聯編程序。相反,您可以使用slideToggle(),它將根據當前的可見性顯示或隱藏選擇。

像:

$('#comment_magic_1').click(function(){ 
    $("#open_sesame_1").slideToggle(); 
}); 

見:http://api.jquery.com/slideToggle/http://api.jquery.com/click/

1

你給你的DIV + CSS display none,然後你滑動上下。由於它沒有可見的地方,因此你不會看到行動發生。在你的jQuery中添加css display:block onclick,然後它會滑動並滑動。

事情是這樣的:

http://jsfiddle.net/6sz6V/3/

相關問題