我正在使用 ryanb 的 simple_nested_form 并且我有以下代码
<%= f.link_to_add "Shipping Address", :shipping_addresses %>
我希望这个链接只执行一次,然后它应该隐藏。我相信我应该使用 jquery 或 ajax,但我对 ajax/jquery 了解不多。谁能建议我如何让这个链接只执行一次?提前致谢。
我正在使用 ryanb 的 simple_nested_form 并且我有以下代码
<%= f.link_to_add "Shipping Address", :shipping_addresses %>
我希望这个链接只执行一次,然后它应该隐藏。我相信我应该使用 jquery 或 ajax,但我对 ajax/jquery 了解不多。谁能建议我如何让这个链接只执行一次?提前致谢。
要在使用该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();
});
});
首先从 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/