Javascript 将jQuery卸载到自己的文件

Javascript 将jQuery卸载到自己的文件,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我对将jQuery合并到它自己的文件感到困惑。我可以用jQuery做我需要的事情,但我要么将每个函数放在自己的.js.erb文件中,要么将其内联到.html.erb文件中,并用脚本标记包装。如果我试图把它们都放在同一个文件中,我就无法让它工作 每当用户单击某个链接时,我想使用不同的div,具体是哪个链接。目前,我有每个指向不同操作的链接,每个链接都有自己独特的.js.erb文件——因此我有大约12个文件,每个文件只有一个jQuery链接——这很有效,但看起来很混乱 示例链接如下所示: <%

我对将jQuery合并到它自己的文件感到困惑。我可以用jQuery做我需要的事情,但我要么将每个函数放在自己的.js.erb文件中,要么将其内联到.html.erb文件中,并用脚本标记包装。如果我试图把它们都放在同一个文件中,我就无法让它工作

每当用户单击某个链接时,我想使用不同的
div
,具体是哪个链接。目前,我有每个指向不同操作的链接,每个链接都有自己独特的.js.erb文件——因此我有大约12个文件,每个文件只有一个jQuery链接——这很有效,但看起来很混乱

示例链接如下所示:

<%= link_to({:action => 'economics'}, remote: true) do %><div id="department" class="economics">Economics</div><% end %>


谢谢你的评论

我不是jQuery专家,但总的来说,我喜欢将单个视图的所有javascript分离到单个文件中,而不是将它们内联

我相信这是一种“轻率”的方式。理想情况下,每个视图都有一个JS文件。查看此博客,了解更多一般信息()


现在,当我这样做时,我还确保将JS包装在
$(document.ready(function()…
)中,以确保脚本在pageload上运行。试试看,看看它是否适合您。

一个黑暗中的镜头,因为我不熟悉Ruby,但据我所知,您可以将目标div ID添加到每个源div:

<div id="department" class="economics" data-target="economics_target_div">
这将遍历具有上述数据属性的所有div,并处理它们的click事件


.

如果你需要将同一段代码重写12次,你不认为你应该改变编写JavaScript的方式吗?你能发布渲染的HTML和当前的JS代码吗?Rails资产管道让你将所有JavaScript都放在一个文件中,这很好。但这也意味着你要正确地编写JS,这样就不会产生干扰发生了。这就是js框架派上用场的地方。太好了-数据目标是关键!谢谢!我还发布了我试图实现的最终代码,以防你好奇:DCheers,很高兴我能提供帮助,很高兴这只是纯js/jQuery,否则我会非常无助。:)
<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>
$("div#render_form").click(function() {
    var targetId = $(this).data("target");
    var text = $(this).text();
    if (targetId.length > 0) {
        $(this).data("target");
        $('#' + targetId).text(text);
    }
});
<div id="department" class="economics" data-target="economics_target_div">