$.validator.unobtrusive.parse-rails 中的 jquery

Posted

技术标签:

【中文标题】$.validator.unobtrusive.parse-rails 中的 jquery【英文标题】:$.validator.unobtrusive.parse - jquery in rails 【发布时间】:2012-04-16 21:57:54 【问题描述】:

我发现了这个关于 $.validator.unobtrusive.parse 的问题和答案

jquery ujs not functioning when I remotely load partials/content with remote calls or jQuery

看起来这是我需要做的,以使 jquery 在使用 ajax 加载的页面部分上工作。

但我想知道它在做什么!它是调用rails ujs,还是直接与jquery交谈?我搜索了 rails ujs git hub 站点和 jquery 文档,但在这两个地方都看不到任何东西。是否有任何文档?

感谢您的帮助。


也许这更清楚:

当我使用 create.js.erb 或 update.js.erb 添加或更改页面的一部分时,如何让 jquery 在页面的这些部分上工作。我正在尝试使元素再次可排序,this question 是关于最佳就地编辑,还有其他几个问题,上面的链接似乎是唯一的答案,我无法做到这一点。

那么你如何让 jquery “查看”你已经使用 rails ujs 更改过的页面部分。

【问题讨论】:

对不起,我不清楚你的问题,也许你最好给我们一个你的问题的例子。 【参考方案1】:

这在很大程度上取决于您要“重新工作”的页面元素类型,以及原始“工作”的触发方式。

如果原始 jquery 代码通过以下方式触发:

$(document).ready(function()
  $('#mydiv").css('color','red');
);

如果你想在 update.js.erb 改变它的内容后重置 div 的颜色(我知道,愚蠢的例子),你可以创建一个自定义事件并将其绑定到 div:

$(document).ready(function()
  $('#mydiv").on('rework', function() 
    $(this).css('color','red');
  );
);

然后,在 update.js.erb 的最后一行,你可以这样做:

$('#mydiv').trigger('rework');

如果原始工作是通过 on change 事件或 click 事件等触发的,那么您可以触发该事件:

$('#mydiv').trigger('click');

触发事件很棘手,因为触发事件与实际事件并不完全相同,而且事件通常很棘手。

这可能就像在 update.js.erb 末尾添加重复代码一样简单,如果它是一个简单的一行或几行代码。

【讨论】:

感谢您的意见 - 我可以玩很多!

以上是关于$.validator.unobtrusive.parse-rails 中的 jquery的主要内容,如果未能解决你的问题,请参考以下文章