Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用带有锚点的链接到函数_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

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 %>