我有这样的观看形式:
<% @company.projects.each do |project| %>
<%= link_to_function project.title, "toggle_information_for('#{project.id}')" %>
<br />
<div id="information_for_<%= project.id %>">
<p><%= project.information %></p>
<br/>
</div>
<% end %>
我有这个jQuery函数:
function toggle_information_for(project){
$("#information_for_"+project).toggle();
}
如何使link_to像锚一样?
例如:
如果我点击project.title,然后通过toggle_information_for函数打开有关项目的信息,并将url更改为/#project_id。我该怎么做?
答案 0 :(得分:1)
我不确定我理解你的问题,但是你想要调用toggle_information_for JS函数,你需要像这样写link_to
:
<%= link_to_function project.title, "javascript:toggle_information_for('#{project.id}')" %>
如果您要将项目ID添加到您的网址,请尝试:
function toggle_information_for(project){
$('#information_for_' + project).toggle();
location.hash = project;
}
希望这会有所帮助。虽然这有效,但我建议删除链接的href
中的直接JS调用,并通过编写link_to
直接在JS中添加一个事件处理程序:
<%= link_to_function project.title, "#information_for_#{project.id}" %>
像这样编写JavaScript:
function toggle_information_for(e){
$(e.target.href).toggle();
location.hash = project;
}
$('#wrapper_div').delegate('click', 'a', toggle_information_for);
答案 1 :(得分:0)
我建议添加一个类,然后将jQuery逻辑与html分开。
<% @company.projects.each do |project| %>
<div class="info_for" id="info_for_<%= project.id %>">
<%=project.title%>
<br />
<div>
<p><%= project.information %></p>
<br/>
</div>
</div>
<% end %>
然后是一些jQuery
$('.info_for').click(function(){
$('div',this).toggle();
});