Javascript 如何动态生成动态项?
我正在寻找一种使用javascript在javascript中附加元素的方法。基本上我有两个项目清单。其中一个具有使用link_to_remote的添加按钮的项目列表,另一个具有使用link_to_remote的删除按钮的项目列表。当我单击“添加”按钮时,它会立即将项目放入其他列表中。但是,我需要能够让新插入的项执行删除的反向操作Javascript 如何动态生成动态项?,javascript,ruby-on-rails,dynamic,rails-generate,Javascript,Ruby On Rails,Dynamic,Rails Generate,我正在寻找一种使用javascript在javascript中附加元素的方法。基本上我有两个项目清单。其中一个具有使用link_to_remote的添加按钮的项目列表,另一个具有使用link_to_remote的删除按钮的项目列表。当我单击“添加”按钮时,它会立即将项目放入其他列表中。但是,我需要能够让新插入的项执行删除的反向操作 除此之外,我看不出有什么办法,可能是创建一个partial来呈现一个非对象来动态生成这种性质的动态项。您可能正在寻找一些javascript模板解决方案。查看此链接
除此之外,我看不出有什么办法,可能是创建一个partial来呈现一个非对象来动态生成这种性质的动态项。您可能正在寻找一些javascript模板解决方案。查看此链接 希望这能回答您的问题。警告:黑客解决方案 我有一个选择列表,需要从中动态添加和删除元素。两者都是AJAX调用 控制器方法呈现一个包含Javascript的部分,以从选择列表中添加和/或删除项目。与任何其他分部一样,分部是一个普通的旧erb文件,它插入从列表中对象的对象ID生成的适当DOM标识符 我看了一些Javascript模板解决方案,但没有一个足够灵活。最后,自己生成Javascript更容易。您签出了吗?它是一个流行的JavaScript库。它完全可以轻松地完成您描述的任务。我已经用了很多年了,它从来没有让我失望过 显示append方法。你可以做像
$("span").appendTo("#foo");
$span部分查找DOM的一个或多个元素,然后appendTofoo部分将其附加到DOM的另一个元素
您还可以附加任意的HTML片段。如果需要,可以通过AJAX请求检索这样的代码片段。jQuery具有非常简单和可靠的AJAX支持
使用jQuery,基本概念是将JavaScript方法绑定到单独的.js文件中的DOM元素,而不是在这个或那个属性上使用HTML。因此,如果在这种情况下使用jQuery,就不会考虑通过模板生成JS代码。add和remove函数将位于.js文件中,您可以根据需要将它们绑定和解除绑定到DOM元素。例如,当您将li添加到列表中时,您需要从li中解除add函数的绑定,并将remove函数绑定到它。这相当容易。有很多事情可以帮您完成,请查看jquery 不久前我手工编写了一些代码,很抱歉代码写得很糟糕。它可以从播放列表中添加和删除曲目 控制器: 容器: 添加内容:
<%session[:admin_playlist_tracks].each do |recording_id|%>
<div style="margin-bottom:4px;">
[<%=link_to_remote "Remove",
:url => {:controller => :playlists, :action => :remove_track, :recording_id => recording_id},
:update =>"all_tracks"%>]
<%recording = Recording.find_by_id(recording_id)%>
<%=recording.song.title%> <br />
by <%=recording.artist.full_name%> (<%=recording.release_year%>)
</div>
<%end%>
显示/删除内容:
<%session[:admin_playlist_tracks].each do |recording_id|%>
<div style="margin-bottom:4px;">
[<%=link_to_remote "Remove",
:url => {:controller => :playlists, :action => :remove_track, :recording_id => recording_id},
:update =>"all_tracks"%>]
<%recording = Recording.find_by_id(recording_id)%>
<%=recording.song.title%> <br />
by <%=recording.artist.full_name%> (<%=recording.release_year%>)
</div>
<%end%>
这对我很有用,因为我可以使用会话变量。但是要小心!在某些情况下,用户将拥有具有相同窗体的各种窗口,这肯定会中断,因为将对会话变量进行并发访问
因为我也在做一些自动完成的工作,所以缺少了一些部分,但我希望这将有助于你了解大局。是的,这就是我目前正在做的。它似乎工作正常,我只是希望我能想出一个办法,使它从一个部分回来。如果可能的话,在控制器中使用helper方法的正确语法并不直观。谢谢。谢谢所有这些,但我只是尝试使用Rails和Rails帮助程序来实现这一点。如果没有办法的话,我会选择JS路线。目前,我只是简单地使用partials来处理所有事情,但我希望能够从render:update部分进行处理。再次感谢。
<%= link_to_remote "Add",
:url => {:controller => :playlists, :action => :add_track, :recording_id => recording.id},
:update =>"all_tracks",
:complete => visual_effect(:highlight, 'all_tracks') %>
<%session[:admin_playlist_tracks].each do |recording_id|%>
<div style="margin-bottom:4px;">
[<%=link_to_remote "Remove",
:url => {:controller => :playlists, :action => :remove_track, :recording_id => recording_id},
:update =>"all_tracks"%>]
<%recording = Recording.find_by_id(recording_id)%>
<%=recording.song.title%> <br />
by <%=recording.artist.full_name%> (<%=recording.release_year%>)
</div>
<%end%>