2012-04-25 65 views
1

我使用ryanb的simple_nested_form和我有以下代碼做一個鏈接隱藏在回報率

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

我想只執行一次此鏈接,那麼它應該躲起來。我相信我應該使用jquery或ajax,但我不太瞭解ajax/jquery。任何人都可以建議我如何使這個鏈接只執行一次?提前致謝。

回答

1

首先從www.jquery.com下載jQuery。接下來將JS文件添加到您的頁面。 接下來的事情應該是這樣的:

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

就是這樣。如果要隱藏每個被點擊的錨點,請使用$(「a」)替換#your_link_id。另外,如果你的標籤有一些類,你可以根據它的類來隱藏它,比如$(「a.myClass」)。

UPDATE:

關於你的評論,一個代碼可能是這個樣子:

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

基本上,當你點擊一個鏈接一個名爲clickedOnce將被添加類。之後,使用.on()通知此鏈接在第二次點擊時隱藏自身。

希望這會有所幫助。

編輯:這裏是如何工作的示例:http://jsfiddle.net/rvQ4w/23/

+0

感謝哥們。它的工作但是有可能使這個鏈接隱藏第二次?對不起,我不清楚這個問題。鏈接連接到一個部分。所以我想要鏈接執行一次然後隱藏。 – bharath 2012-04-25 09:50:34

+0

所以,你想點擊鏈接,顯示內容,點擊第二次,然後隱藏它? – 2012-04-25 09:54:41

+0

是的,這就是我想要的! – bharath 2012-04-25 09:55:52

1

要獲得鏈接使用hide方法時,實際火,你必須包括在hide()方法回調返回true,這會冒泡到原來的事件回調。我在主函數中返回true的測試不起作用,所以我認爲hide方法必須使任何事件傳播都短路。既然您希望它在第二次點擊後才觸發,您需要將事件綁定兩次,第一次點擊調用將該元素上任何以下點擊事件綁定到hide方法的函數。基本上只是第二層。

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

如果您不希望第二個單擊實際火災的主要事件的第二次(比如,如果你有它使文字顯示,但在第二次點擊,你不希望文本重-display),你應該解除主事件,如下所示:

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

安東尼鏈接在第一個鏈接上被隱藏,希望它執行一次,然後它應該第二次隱藏。可以修改它以使其隱藏第二次。提前致謝。 – bharath 2012-04-25 10:22:15