0

私のページには、AJAXリモート呼び出しを行うリンクがpasscheck_pathあり、その周りのpタグは、ページ全体をカバーするJQueryモーダルボックスをアクティブ化する機能を提供します。

<p class="right blackout">
  <%= link_to "blank screen", passcheck_path, :remote => true %>
</p>

JSは次のとおりです。

$().ready( function() {
    $('.blackoutwindow').jqm({
        modal: true,
        trigger: '.blackout',
        overlay: 100
    });
});

リンクをクリックするとモーダルが表示されますが、リモートコールはまったく発生しません。ただし、タグを削除するpと、リモート呼び出しは完全に機能します(ただし、モーダルはトリガーされません)。なぜこのように動作するのか本当にわかりませんが、JavaScriptが何かをオーバーライドしていると思いますか?

どうぞよろしくお願いいたします。

4

1 に答える 1

0

使用するjqModalプラグインは、リンクで定義されているすべてのクリックハンドラー(Railsによるものも含む)のバインドを解除します。

したがって、jqModalがかなり古くなっているように見えるため、プラグインを別のプラグインまたはjqueryuiモーダルダイアログに切り替えるか、jqModalのonShowコールバックを使用してリモートで呼び出すことで回避策を実装できます。

$('.blackoutwindow').jqm({
    modal: true,
    onShow: function() {
        $.get($(this).attr('href')); // DIY Implementation of the remote call
    },
    trigger: '.blackout',
    overlay: 100
});

このフィドルを見て、問題と解決策を確認してください

于 2012-07-20T15:34:02.133 に答える