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