0

这应该是一个简单的:

鉴于此链接:

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

谢谢。

4

2 回答 2

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();
于 2013-01-12T09:42:38.053 回答
0

看来问题是由于我使用了远程链接。我无法在远程 = true 的 href 中使用 javascript

即使将远程属性更改为 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 显示文件:

$("#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();
}

这不是很多“铁路方式”,但我不知道更好的方式。

有人会吗?

于 2013-01-12T16:18:37.587 回答