gpt4 book ai didi

jquery - 如何在不修改提供的 Rails.js 的情况下覆盖 Rails 3 不显眼的 javascript 函数?

转载 作者:行者123 更新时间:2023-12-01 02:25:04 24 4
gpt4 key购买 nike

我的 Javascript 不太符合要求,我正在努力重写提供的 rails.js 中的函数。 .

我想修改a[data-confirm]的方式使用 jQuery UI 模式对话而不是普通的 javascript 来处理 confirm() .

相关函数在rails.jsallowAction(element) 。如果我在另一个文件中定义它,我可以从 firebug 控制台成功调用它,但是 rails.js版本仍然从 anchor 调用 data-confirm属性。

我认为这是因为整个rails.js文件包含在:

(function($) {
...
})( jQuery );

是否有一种明智的方法来覆盖此函数,而不修改提供的 rails.js

编辑:

来电rails.jsallowAction包裹在 .live 中调用:

  $('a[data-confirm], a[data-method], a[data-remote]').live('click.rails', function(e) {
var link = $(this);
if (!allowAction(link)) return false;

if (link.attr('data-remote')) {
handleRemote(link);
return false;
} else if (link.attr('data-method')) {
handleMethod(link);
return false;
}
});

我还尝试在rails.js之前和之后包含我的javascript ,无济于事。

编辑:

所以,如果我打电话 .die('click.rails')然后我可以重新定义整个 click.rails事件,而是原创handleRemote()handleMethod()不调用函数。

最佳答案

仅供引用,我刚刚向 Rails jquery-ujs 添加了一个外部 API 来完成此类事情。现在,您可以通过插入(并重写 1 行)$.rails.allowAction 函数,使rails.js 使用自定义确认方法。

请参阅我的文章,Rails jQuery UJS: Now Interactive ,获取带有示例的完整解释。

编辑:现在,截至 this commit可以用相同的方式覆盖confirm对话框函数。例如

$.rails.confirm = function(message) { return myConfirmDialog(message); };

关于jquery - 如何在不修改提供的 Rails.js 的情况下覆盖 Rails 3 不显眼的 javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com