0

私はウェブサイトを作成しており、jquery を使用してフォームを投稿しています。送信ボタンを押すと、jquery 関数がフォームを php ファイルに投稿します。php ファイルは、結果エラーまたは成功を作成します。結果はphpファイルでエコーされ、jqueryファイルは.html()メソッドを使用してエコーを出力します。

私はhtml出力を呼び出します#result.

だから私の質問は、#resultusing jqueryを非表示にする方法です。これは 5 秒後に発生する必要があります。

これ#resultは、ページがロードされたときに正常に機能します。しかし、#result上記のようにロードされたときではありません。

setTimeout(function(){ 
      $('#result').slideUp(500);  
}, 5000);
4

3 に答える 3

0

$.ajax をsuccessコールバック オプションとともに使用するか、.done() メソッドを使用できます。例:

$.ajax({
    url:"http://someurl/",
    success: function(data){ $('#result').html('success').show(); },
    error: function(data){ $('#result').html('error').show(); }
}).done(function(){
   setTimeout(function(){ 
       $('#result').slideUp(500);  
   }, 5000);
})
于 2013-10-22T16:38:36.293 に答える
0

#resultは動的に DOM に追加されることがあり、jQuery 関数は通常、ドキュメントの準備ができたときに読み込まれます。この問題を解決するには、DOM の変更をリッスンする必要があります。何らかの理由で AJAX を使用していない場合、または別のアプローチが必要な場合は、次の方法を試すことができます。

function hideMsg(){
    // Hide dynamically added div
    setTimeout(function(){ 
          $('#result').slideUp(500);  
    }, 5000);
}
// Listen DOM changes
$('.document').bind("DOMSubtreeModified", hideMsg);

これを機能させるには、ドキュメント ラッパー (メッセージが表示される場所) で.documentを変更する必要があります。

jsFiddle の例: http://jsfiddle.net/laelitenetwork/GUxgX/

乾杯。

于 2013-10-22T17:05:43.480 に答える