0

私はjqueryダイアログモーダルボックスにさまざまなコントローラーのほとんどすべてのフォームを持っています、そして私が遭遇している問題は、それらのモーダルがロードされるとき、ujsリンク(data-remote、data-confirmなど)が完全に無視されることですjqueryによる。これらのパーシャルがajaxを介してロードされているとき、イベントはajaxによってdomに追加された新しいリンクを含むようにバブリングしていないと思います。誰かがこれに遭遇しましたか?私はそれを回避する方法を理解できないようです。これがあまり明確でない場合は、コードを投稿できます...

4

4 に答える 4

1

マークアップが動的に追加されている場合、イベント委任を利用する場合にのみイベントが機能します。

jQuery でのイベント委任の基本に関するかなり良い記事があります - http://jqueryfordesigners.com/simple-use-of-event-delegation/bind基本的には、を通じて作成されたハンドラを useに切り替える必要がありますon

于 2012-06-12T01:00:52.510 に答える
0

ujsのinitをダイアログの開いているコールバックに移動してみてください。

于 2012-06-11T15:29:26.660 に答える
0

わかりましたので、これで修正しました。カスタムjquery uiダイアログボックスを使用して、リモートの真のリンクの上でカスタム確認を行うことができます

var myCustomConfirmBox;
$.rails.allowAction = function(element) {
  var answer, callback, message;
  message = element.data("confirm");
  answer = false;
  callback = void 0;
  if (!message) {
    return true;
  }
  if ($.rails.fire(element, "confirm")) {
    myCustomConfirmBox(message, element);
  }
  return false;
};
myCustomConfirmBox = function(message, callback) {
  $("#dialog-confirm .content").html(message);
  return $("#dialog-confirm").dialog({
    resizable: false,
    height: 180,
    modal: true,
    buttons: {
    Continue: function() {
      $.rails.handleRemote(callback);
      return $(this).dialog("close");
    },
    Cancel: function() {
      return $(this).dialog("close");
    }
  }
});
};
于 2012-06-13T17:09:34.630 に答える
0

Magicmarkker の方法を試してみました。バージョン管理された js インポート コードをモーダル ビュー ページに追加するだけで、うまくいきました。

 <script type="text/javascript" src="/assets/jquery_ujs.js?body=1"></script>
于 2013-04-27T12:49:37.173 に答える