1

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

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

我希望这个链接只执行一次,然后它应该隐藏。我相信我应该使用 jquery 或 ajax,但我对 ajax/jquery 了解不多。谁能建议我如何让这个链接只执行一次?提前致谢。

4

2 回答 2

1

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

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

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

$("a").on('click', function(e) {
    $(this).unbind(e);
    $(this).on('click', function() {
        $(this).hide();
    });
});
于 2012-04-25T10:12:06.920 回答
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") 中的 a。另外,如果你的锚标签有一些类,你可以根据它的类隐藏它,比如 $("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/

于 2012-04-25T09:44:05.863 回答