Isa*_*aac 0 javascript ruby-on-rails partial-views partial dynamically-generated
我知道将JavaScript放在partials中是一个坏主意,因为每次加载新的部分时页面都必须加载一个新脚本.我知道并且已经阅读了这个问题,但它的答案对我不起作用(将脚本放入app/javascripts/application.js).我认为这是因为我正在处理动态生成到页面上的部分内容.我认为动态生成的部分不会对初始页面上加载的脚本做出反应.
例如,我有一个带有选择输入的"Rule"div,当选择输入发生变化时,该输入有一个脚本可以执行某些操作.这适用于在页面加载时生成的每个Rule div.但是还有一个"+"或"ADD"按钮,它会动态生成更多不响应脚本的Rule div,除非该脚本在partial中.
在动态生成partial时,是否有一种很好的方法可以将脚本保留在partial之外?
JQuery在页面加载(即$(selector).on(etc.))上设置侦听器,因此它不会监听动态添加元素上的事件.不过,有一种解决方法.您需要使用所谓的委托.
$(document).ready( function() {
$('body').on('change', 'input.selector', function(e) {
// do something
});
});
Run Code Online (Sandbox Code Playgroud)
我不确定change您所使用的选项(我在这里放置)的事件(这里是我的)或选择器input.selector,但是如果用适当的信息替换它们,它甚至可以使用动态添加的元素.