Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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
rails ajax生成的javascript链接不';行不通_Javascript_Ruby On Rails_Ajax - Fatal编程技术网

rails ajax生成的javascript链接不';行不通

rails ajax生成的javascript链接不';行不通,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,这应该是一个简单的问题: 鉴于这一联系: <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> 这个链接不起作用。知道为什么吗?我知道在Jquery中,我需要在加载后重新绑定它,但这是纯java

这应该是一个简单的问题:

鉴于这一联系:

<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>
这个链接不起作用。知道为什么吗?我知道在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”)attr(“href”,“javascript:hideDescription()”);
如果您只想在单击后隐藏链接,可以执行以下操作:

$("#description_link_<%=@challenge.id%>").hide();
$(“描述链接”).hide();

问题似乎是因为我使用了远程链接。我无法在href中使用remote=true的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} %>
这不是什么“rails方式”,但我不知道还有更好的方式


有人这样做吗?

是的,这可能是一种方法,但我在hideDescription函数中添加了其他东西(如重新定义链接)。你可以在js.erb文件中执行所有这些操作,或者我不知道你到底想做什么。我使用js.erb加载div。要关闭此div,我希望避免往返服务器,所以我更喜欢在页面上使用javascript。这个javascript应该删除描述并将链接重置为其原始状态。如果你有更好的方法,我很开放,但我认为我所做的是非常直接的,误差应该很小。谢谢你的帮助
$("#description_link_<%=@challenge.id%>").hide();
<%= 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} %>
$("#task_<%=@challenge.id%>").append("<%=j render partial: 'description_line', locals: {challenge: @challenge}%>");
$("#description_link_<%=@challenge.id%>").hide();
$("#description_hide_link_<%=@challenge.id%>").show();
function hideDescription(id) {
    $("#task_description_" + id).remove();
    $("#description_link_" + id).show();
    $("#description_hide_link_" + id).hide();
}