Javascript 使用带有锚点的链接到函数
我有这样的视图形式:Javascript 使用带有锚点的链接到函数,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我有这样的视图形式: <% @company.projects.each do |project| %> <%= link_to_function project.title, "toggle_information_for('#{project.id}')" %> <br /> <div id="information_for_<%= project.id %>"> <p><%= project.inform
<% @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 %>
<%= link_to_function project.title, "javascript:toggle_information_for('#{project.id}')" %>
<%= link_to_function project.title, "#information_for_#{project.id}" %>
function toggle_information_for(e){
$(e.target.href).toggle();
location.hash = project;
}
$('#wrapper_div').delegate('click', 'a', toggle_information_for);
我怎样才能使链接像锚一样
例如:
如果我单击project.title,然后通过切换函数的“信息”打开有关项目的信息,url更改为/#project\u id。我如何才能做到这一点?我不确定我是否理解您的问题,但您希望调用JS函数的“切换信息”,您需要像这样将
链接到:
<% @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 %>
<%= link_to_function project.title, "javascript:toggle_information_for('#{project.id}')" %>
<%= link_to_function project.title, "#information_for_#{project.id}" %>
function toggle_information_for(e){
$(e.target.href).toggle();
location.hash = project;
}
$('#wrapper_div').delegate('click', 'a', toggle_information_for);
希望这能有所帮助。虽然这样做有效,但我建议不要在链接的href
中使用直接JS调用,而是直接在JS中添加一个事件处理程序,方法是将链接写入,如下所示:
<% @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 %>
<%= link_to_function project.title, "javascript:toggle_information_for('#{project.id}')" %>
<%= link_to_function project.title, "#information_for_#{project.id}" %>
function toggle_information_for(e){
$(e.target.href).toggle();
location.hash = project;
}
$('#wrapper_div').delegate('click', 'a', toggle_information_for);
我建议添加一个类,然后将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 %>