2011-10-08 6 views
0

私は部分的なレンダリングにajax呼び出しを使用しています。問題は、呼び出しが終了したときに、(私が理解する限り)live()メソッドを使用する場合のみ、私のjqueryコードが新しく挿入されたHTML に適用されることです。単なる存在を検出するJQueryイベントはありますか?

「クリック」イベントがアタッチされているセレクタには、live()メソッドが正常に使用されています。例:

しかし、単純なhide()関数にlive()を使用する方法がわかりません。つまり、HTMLスニペットが最初に表示されるときに非表示にしたいと思います。私はload()がうまくいくかもしれないと思ったが、そうではない。助言がありますか?

$('.descrip_body').live('load', function(e) { 
    $('.descrip_body').hide(); 
}); 

ただ、明確にするために、私は)(住んで使用するバージョンに

$('descrip_body').hide(); 

を変換したいです。


答えに応じて、hide()コールバックをAJAXリクエストに添付しようとしました。しかしそれはまだ機能しませんでした(つまり、関連するHTMlは隠されていませんでした)。ここではそのコードは次のとおりです。

$("#courses_body").html("<%= escape_javascript(render :partial => 'courses') %>", function() { 
    $('.descrip_body').hide(); 
}); 

答えて

3

つの質問:

1-すでにdisplay:noneスタイルを持つクラスを使用してHTMLを読み込むことができませんか?

2成功コールバック関数に$('.descrip_body').hide();コードを入れないでください。

最初の場所にロードされているHTMLスニペットでどのように

+0

ああ、最初は単純な修正でした。ありがとう!第二は、試しましたが、うまくいきませんでした。あなたが洞察力を持っている場合に備えて、上の質問を新しいコードで更新します。 – jyli7

0

...私は、これはあなたが求めて正確に何ではないですけど、彼らは同様に働くかもしれませんか? AJAX呼び出しが返ってきたら、それを隠すのはなぜですか?

1

実際にAJAXリクエストがないようです.AJAXリクエストは特定のURLにヒットし、URLからマークアップを返し、コールバックとして「成功」メソッドを起動します。 jQueryは$ .ajax、$ .post、$ .getを使ってこれを行います。

$ .htmlは、はるかに簡単です - マークアップの文字列をすぐにDOMに注入します。これはあなたが使っているものです。なぜなら、Railsの部分はその文字列をあなたの$ .html()引数に直接入れているからです。

あなたがしていることが非同期ではないため、実際にはコールバックやその他のイベントは必要ありません。あなたのマークアップとしてを待つ必要はありませんページに表示する。あなたはそれを注入して操作を開始することができます。試してみてください:

+0

ああ、それは動作します!そして非常に明確な説明。ありがとう! – jyli7

関連する問題