这应该很简单:
鉴于此链接:
<a id="description_link_146" class="document_icon pull-left" data-slug="link-to-the-blog" data-remote="true" href="/challenges/link-to-the-blog/description_line"></a>
单击时,它会不显眼地执行此js.erb视图,修改我们的链接以触发javascript hideDescription()函数:
$("#task_<%=@challenge.id%>").append("<%=j render partial: 'description_line', locals: {challenge: @challenge}%>");
$("#description_link_<%=@challenge.id%>").attr("href","javascript: hideDescription(<%=@challenge.id%>)");
这是hideDescription功能:
function hideDescription(id) {
alert("hide");
}
此链接无效。知道为什么吗?我知道在Jquery中,我需要在加载后重新绑定它,但这是纯粹的javascript。
感谢。
答案 0 :(得分:0)
据我所知,这是你的js.erb文件代码:
$("#task_<%=@challenge.id%>").append("<%=j render partial: 'description_line', locals: {challenge: @challenge}%>");
$("#description_link_<%=@challenge.id%>").attr("href","javascript: hideDescription(<%=@challenge.id%>)");
如果您只想在点击后隐藏链接,可以这样做:
$("#description_link_<%=@challenge.id%>").hide();
答案 1 :(得分:0)
问题似乎是因为我使用了远程链接。我无法在href中使用javascript with remote = true
即使将远程属性更改为false也无济于事。我想这个链接需要解除绑定,但我不知道该怎么做。
我最后创建了一个单独的隐藏链接并使用hide()和show()方法进行游戏:
链接:
<%= link_to "", description_line_challenge_path(challenge), class: "document_icon pull-left", id: "description_link_#{challenge.id}", data: {slug: challenge.slug}, remote: true %>
<%= link_to "", "javascript:hideDescription(#{challenge.id})", class: "document_icon pull-left", style: "display: none", id: "description_hide_link_#{challenge.id}", data: {slug: challenge.slug} %>
js.erb show file:
$("#task_<%=@challenge.id%>").append("<%=j render partial: 'description_line', locals: {challenge: @challenge}%>");
$("#description_link_<%=@challenge.id%>").hide();
$("#description_hide_link_<%=@challenge.id%>").show();
javascript函数:
function hideDescription(id) {
$("#task_description_" + id).remove();
$("#description_link_" + id).show();
$("#description_hide_link_" + id).hide();
}
这不是“铁路方式”,但我不知道更好的方法。
有人吗?