我正在使用ryanb的simple_nested_form,我有以下代码
<%= f.link_to_add "Shipping Address", :shipping_addresses %>
我希望此链接只执行一次,然后它应该隐藏。我相信我应该使用jquery或ajax,但我不太了解ajax / jquery。任何人都可以建议我如何使这个链接只执行一次?提前谢谢。
答案 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();
});
});