将jQuery卸载到自己的文件中
Offloading jQuery to its own file
我对将jQuery合并到它自己的文件感到困惑。我可以用jQuery做我需要的事情,但我要么把每个函数放在自己的.js.erb文件中,要么把它内联在.html.erb文件中并用脚本标记包装。如果我试图把它们都放在同一个文件中,我就无法让它发挥作用。
每当用户点击链接时,我想replaceWith()
是一个不同的div
,具体到它是哪个链接。目前,我让每个链接指向不同的操作,每个链接都有自己独特的.js.erb文件-所以我有大约12个文件,每个文件只有一个jQuery链接-这很有效,但看起来很混乱。
一个示例链接是这样的:
<%= link_to({:action => 'economics'}, remote: true) do %><div id="department" class="economics">Economics</div><% end %>
以及关联的jQuery(这也是economics.js.erb文件中唯一的一行):
$('#target_div').replaceWith('<%= j render "economics" %>')
我觉得必须有一个更干净的方法来做这件事。
感谢下面的评论,我开始工作了!这是的通用代码
HTML数据远程是关键!
<div id="render_form" data-target="target_div" data-remote="true"> economics </div>
<div id="render_form" data-target="target_div" data-remote="true"> other </div>
<hr />
<div id="target_div">Nil</div>
jQuery
$("div#render_form").click(function() {
var targetId = $(this).data("target");
var text = $(this).text();
if (targetId.length > 0) {
$(this).data("target");
$('#' + targetId).text(text);
}
});
jsFiddle可以在这里找到!
谢谢你的评论!
我不熟悉Ruby,但据我所知,你可以将目标div ID添加到每个源div:
<div id="department" class="economics" data-target="economics_target_div">
然后在你的主文件中有一个jQuery代码块:
$(document).ready(function() {
$("div[data-target]").click(function() {
var targetId = $(this).data("target");
if (targetId.length > 0) {
//prevent replacing again:
$(this).data("target", "");
$('#' + targetId).replaceWith(this);
}
});
});
这将遍历所有具有上述数据属性的DIV,并处理它们的点击事件。
实时测试用例。
我不是jQuery专家,但总的来说,我喜欢将单个视图的所有javascript分离到一个文件中,而不是内联。
我相信这是"Railsy"的方法。理想情况下,每个视图都有一个JS文件。查看此博客了解更多常规信息(http://xn--ncoder-9ua.dk/blog/2012/02/page-specific-javascript-in-rails-3/)
现在,当我这样做时,我还确保将JS封装在$(document.ready(function()...
中,以确保脚本在页面加载时运行。试试看它是否对你有用。
- 从我自己的脚本中包含的Javascript文件中调用一个函数
- 如何使用PHP从我自己的网站上的Google Drive获取文件和文件夹列表
- 如果从自己的文件中调用函数,则不会触发 JSON 回调
- 如何将控制器配置移动到其自己的文件中
- 将页眉和页脚分隔到它们自己的文件中
- 有没有办法将依赖声明分离到节点/快递中自己的文件中
- 浏览包含package.json的文件夹时,Browserify会覆盖自己的配置
- CKEditor破坏了我的其他js应用程序,如何加载我自己的js文件
- 我的所有css和javascript都应该在自己的文件夹中吗
- AngularJS模块应该在自己的文件中吗
- 将Bower的供应商js文件和自己的js文件管道传输到Gulp中的唯一流中
- 如何从他自己的js文件中找到脚本路径
- 如何在ExpressJS中的不同文件中创建自己的异步函数
- Firefox附加组件不能将自己的文件作为新的xul窗口打开
- 实现Jquery从jsfiddle到自己的html文件
- 如何从HTML文件中取出脚本并将其移动到它自己的. js文件中
- 每个用户在iBrowser中拥有自己的TinyMCE图像文件夹
- 将自定义JS文件和字体添加到您自己的UIkit分发版的最佳方法是什么?
- 当将内联javascript移动到它自己的文件中时,页面不再正常工作
- 将ng-change应用于一个,该文件已经使用了它自己的指令