2

ページに一連のリンクがあり、リンクが押されるたびに素敵なポップアップが表示されるように、facebox jQuery 機能を添付しました。

<a href="coach_selector_popup?day=<%= day %>&hour=<%= hour %>" rel="facebox">

以下は、「facebox」に使用するスクリプトです。

<script type="text/javascript">
  jQuery(document).ready(function($) {
    jQuery('a[rel*=facebox]').facebox()
  })
</script>

上記は正常に動作しています。しかし、AJAX 呼び出しに応答して再度レンダリングすると、機能が失われます。つまり、リンクをクリックすると、facebox ポップアップではなくページにリダイレクトされます。

再描画するときに何かをする必要があることはわかっています。誰かが私を正しい方向に向けることができますか?

編集:このようにコントローラーでパーシャルレンダリングを行っています。

render(:partial => "grid_item" , :locals => {:day=>d, :hour=>h)
4

2 に答える 2

3

あなたが部分的に言及したJavaScriptコードを含めます。ロード時に再度実行されると思います。部分的な更新で document.ready イベントがトリガーされるかどうかはわかりませんが、そうだと思います。

link_to_remoteまたは類似のものを使用していると仮定すると、次のように:completeor:succesオプションを使用して JavaScript コールバックを追加することもできます。

link_to_remote get_icon('remove'), 
   :url => {:action => "your_action", :id => @record},
   :success => "jQuery('a[rel*=facebox]').facebox();" , 
   :failure => "alert('It failed?')"

それが役に立てば幸い!

于 2010-06-18T13:20:50.220 に答える
1

新しい要素が追加された後、もう一度呼び出す必要があり.facebox()ます... ajaxでコールバック関数を使用します...

于 2010-06-18T12:37:33.063 に答える