无法选择 link_to 标记作为 jquery 选择器 Rails

Posted

技术标签:

【中文标题】无法选择 link_to 标记作为 jquery 选择器 Rails【英文标题】:Can't select link_to tag as jquery selector Rails 【发布时间】:2016-11-22 18:56:38 【问题描述】:

我是一名初学者 Rails 开发人员。我得到了这个带有“cmets_link”类的link_to标签

%h2= link_to pluralize(@recipe.comments.count, "Comment"), "#", class: "comments_link , btn btn-success"

现在,我在 application.js 中写道

$(document).ready(function()
  $(".comments_link").click(function()
    $(".section").toggle();
  );                               
)

这段代码的问题是,无论我为点击事件选择什么元素,它都能正常工作。但是当我使用.comments_link 类时,它不起作用。为什么会这样?

除了link_to 标签之外的任何东西都可以作为事件监听器。我需要向它添加某种代码吗?

顺便说一句,我做了相反的尝试,但它确实有效。当我单击该部分时,它会切换链接。但是链接不能是事件监听器。

$(document).ready(function()
  $(".section").click(function()
    $(".comments_link").toggle();
  );                               
); <-- this one worked. I cant use ".comments_link" as event listener.

【问题讨论】:

您的班级中有一个“,”。 为了确定,我删除了 " , btn btn-default" 部分。但是没有用。 我想看看生成的html 切换 您为其显示 haml 的链接应包含文本“评论”或“评论” - 再试一次。 【参考方案1】:

您在类名中有一个逗号,我认为这会使类名无效。检查开发人员工具以检查元素以查看 .comment_link 是否实际存在。如果不是,请删除逗号并重试

【讨论】:

nope.comma 也没有影响它。这是一个奇怪的错误。 那么你已经验证了元素上的类名是正确的? 问题似乎出在 HTML 上。你能发布 HTML 输出吗 Html 或页面根本没有改变。它刷新页面,我猜是发出请求但没有做任何回报。当我按 F12 然后单击链接时,来源根本没有改变。 我的意思是显示页面加载时生成的 HTML【参考方案2】:

假设这是 turbolinks 的问题,您可以通过阻止事件处理程序中单击的默认操作来解决此问题(无论如何这是个好主意):

$(document).ready(function()
  $(".comments_link").click(function(e)
    e.preventDefault();
    $(".section").toggle();
  );                               
)

【讨论】:

谢谢。终于解决了!但是每次我将jquery添加到链接时我都需要这样做还是有更具体的方法?再次感谢您! 如果您希望链接不像链接,那么这是一个好主意。您可以对所有链接执行此操作,例如。所有以"#" 作为href 的链接,例如$("a[href='#']").click( function(e) e.preventDefault() ) - 但我认为最好是明确的并在每个事件处理程序中都有。 好的。再次感谢。你节省了时间:) 不要忘记接受/投票 - 这里有很多很好的努力可以帮助您。 喜欢不赞成投票的行为,尽管@HarunTuncay 评论说这是解决方法。三氯苯酚

以上是关于无法选择 link_to 标记作为 jquery 选择器 Rails的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3 - link_to 使用 jquery ajax 调用部分

在 ruby​​ link_to 标记中添加多个类名

在铁路应用程序的 link_to 标记中添加工具提示

在 Rails 应用程序中单击 link_to 标记后如何使用 JS 刷新浏览器

在rails中带有jquery参数的link_to

在 Jquery 中访问传递给 link_to 的多个数据参数