在RoR中单击一下后隐藏链接

时间:2012-04-25 09:36:16

标签: jquery ruby-on-rails ajax

我正在使用ryanb的simple_nested_form,我有以下代码

<%= f.link_to_add "Shipping Address", :shipping_addresses %>

我希望此链接只执行一次,然后它应该隐藏。我相信我应该使用jquery或ajax,但我不太了解ajax / jquery。任何人都可以建议我如何使这个链接只执行一次?提前谢谢。

2 个答案:

答案 0 :(得分:1)

首先从www.jquery.com下载jQuery。接下来将JS文件添加到您的页面。 接下来应该是这样的:

<script type="text/javascrip>
    $(document).ready(function() {
        $("#your_link_id").click(function() {
            $(this).hide();
        });
    });
</script>

就是这样。如果要隐藏所有单击的锚点,请将#your_link_id替换为$(“a”)中的as。另外,如果你的锚标签有一些类,你可以根据它的类隐藏它,比如$(“a.myClass”)。

更新:

关于您的评论,代码可能如下所示:

$(document).ready(function() {
    $("a:not(.clickedOnce)").click(function() {
        $(this)
            .addClass("clickedOnce")   
            .on("click", function()     
                { 
                    $(this).hide();   
                });
       });
});

基本上,当您点击链接时,将添加名为 clickedOnce 的类。之后,您使用.on()告诉此链接在第二次单击时隐藏自己。

希望这有帮助。

编辑:以下是示例的工作原理:http://jsfiddle.net/rvQ4w/23/

答案 1 :(得分:1)

要在使用hide方法时获取实际触发的链接,您必须在hide()方法中包含一个回调以返回true,这将冒泡到原始事件回调。我在main函数中返回true的测试不起作用,所以我认为hide方法必须使任何事件传播短路。由于您希望它在第二次单击它之后才会触发,您可能希望将click事件绑定两次,第一次单击调用将该元素上的任何后续点击事件绑定到{{{ 1}}方法。基本上只是第二层。

hide

如果您不希望第二次单击实际上第二次触发主事件(就像您让它显示文本,但在第二次单击时,您不希望文本重新显示),你应该取消绑定主要事件,如下所示:

$("a").on('click', function(e) {
    $(this).on('click', function() {
        $(this).hide();
    });
});