jQueryclick()
は 1 つの関数しか取りません。それは、イベント (クリック) がトリガーされたときに呼び出されるものです。関数を交互に使用する場合、1 つの方法は要素の data プロパティと共に if ステートメントを使用することです。
$('#toggle').click(function() {
if(!$('#popout').data('open')){
$('#popout').animate({ top: '-10px' }, 'slow', function() {
$('#toggle').html('Close');
}).data('open', true);
} else {
$('#popout').animate({ top: '50px' }, 'slow', function() {
$('#toggle').html('Show');
}).data('open', false);
}
});
また、新しいスタイル (つまり、top: '10px') を指定するときに単位を含める場合は、値を引用符で囲む必要があります。ただし、指定していない場合、jQueryはピクセルについて話していると自動的に想定するため、あなたの場合は-10
andを使用するだけです。50
JSFiddle
また、三項演算子を使用してコードを短縮したい場合:
$('#toggle').click(function() {
isOpen = $('#popout').data('open');
$('#popout').animate({ top: isOpen ? '50px' : '-10px' }, 'slow', function() {
$('#toggle').html(isOpen ? 'Close' : 'Open');
}).data('open', isOpen ? false : true);
});
JSFiddle