0

我在一个 jquery 对话框模式框中几乎都有不同控制器的所有表单,我遇到的问题是,当加载这些模式时,ujs 链接(数据远程、数据确认等)被完全忽略通过jQuery。我在想,当这些部分通过 ajax 加载时,事件不会冒泡以包含那些由 ajax 添加到 dom 的新链接。有没有人遇到过这个?我似乎无法找到解决方法。如果这不是很清楚,我可以发布一些代码......

4

4 回答 4

1

如果标记是动态添加的,那么事件只有在您使用事件委托时才会起作用。

这里有一篇很好的关于 jQuery 中事件委托的基础知识的文章 - http://jqueryfordesigners.com/simple-use-of-event-delegation/。基本上,您需要将通过创建的处理程序切换bind为使用on.

于 2012-06-12T01:00:52.510 回答
0

尝试将 ujs 的 init 移动到对话框上的 open 回调。

于 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 回答