2016-05-15 2 views
1

この質問のバリエーションが尋ねられましたが、ほとんどがtoggle()メソッドを使用して解決されたようです。私のシナリオは、hide()show()が2つの異なるイベント、新しいゲームの作成、そしてゲームが勝利したときに駆動されるべきである点で異なります。私は各イベントが1つのことしかしたくないので、toggle()は適切ではないでしょう。JQuery hide()がshow()の後に動作しない、またはその逆の場合

私はsocket.ioを使用してサーバーとブラウザを通信しています。すべてが適切に読み込まれて開始されます。問題は、前の試合が勝利した後に新しい試合を開始しようとすることにあります。関連するJavaScriptは次のようになります。

$(document).ready(function() { 
    socket.on('gameOver', function() { 
     $('.yourStatus').hide(700); 
     $('.winner').show(700); 
    }); 
    $('button.newGame').on('click', function() { 
     $('.winner').hide; 
     $('.yourStatus').show; 
    }); 
}); 

ゲームがsocket.ioイベントで終了すると、すべてが正常に動作します。 hide()show()を除いて、ボタンクリックイベント機能内の他のすべてが正しく機能します。

私は確かにこれに対する答えは恥ずかしいほど簡単です。

+1

'$( '。winner')。hide'は'() 'を忘れているため、関数' hide'を呼び出しません。それは '$( '。winner')でなければなりません。hide()'と同じものが 'show'です。 –

+0

私たちは皆、答えが困っている時に簡単に質問する必要があります。 :) – dewd

答えて

1

あなたは括弧(関数を呼び出し)を使用する必要があります(それが可能であれば讲义1コースの - 要素がDOMに一意である可能性)

$(document).ready(function() { 
    socket.on('gameOver', function() { 
     $('.yourStatus').hide(700); 
     $('.winner').show(700); 
    }); 
    $('button.newGame').on('click', function() { 
     $('.winner').hide(); 
     $('.yourStatus').show(); 
    }); 
}); 

パフォーマンスのヒントを:あなたを宣言した場合

より良いです.winner 'とハッシュ。例:<div id="winner"/>とセパレータjQueryで使用:$("#winner")

+1

'click'や' gameOver'のような低いレートで発生するイベントに対しては、パフォーマンスが大幅に向上することはありません(頻繁なイベントの場合は、セレクタの結果をキャッシュする方が良いでしょう)。しかし、要素が一意の場合は、一意の識別子を使用することをお勧めします。 –

+0

@ t.nieseはい、私は括弧で追加しました: "もちろん可能ならば" - 要素がDOM内で一意であるということを意味します。アドバイスをいただきありがとうございます。私は説明を変更しようとしています – W92

+1

「あなたの状態」と「勝者」が静かに聞こえるので、誤解して申し訳ありませんが、idsを使用することは可能です。コメントは低頻度イベントのコールバックで_class selector_を使用するように聞こえるので、Perrformance tipは_id selector_より顕著なパフォーマンスを示します。 –

関連する問題