Rails ajax生成的javascript链接不起作用

rails ajax generated javascript link doesn't work

本文关键字:javascript 链接 不起作用 ajax Rails      更新时间:2023-09-26

这应该是一个简单的:

给定此链接:

<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。修改我们的链接以触发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。

谢谢。

据我所知,这是你的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();

问题似乎是由于我使用了远程链接。我不能使用javascript在href与remote = true

即使将remote属性更改为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。动词显示文件:

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

这不是很"铁路的方式",但我不知道有更好的方式。

任何人吗?