私はryanbのsimple_nested_formを使用しており、次のコードがあります
<%= f.link_to_add "Shipping Address", :shipping_addresses %>
このリンクを1回だけ実行すると、非表示になります。jqueryまたはajaxを使用する必要があると思いますが、ajax/jqueryについてはよくわかりません。このリンクを1回だけ実行させる方法を誰かが提案できますか?前もって感謝します。
私はryanbのsimple_nested_formを使用しており、次のコードがあります
<%= f.link_to_add "Shipping Address", :shipping_addresses %>
このリンクを1回だけ実行すると、非表示になります。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>
それについてです。クリックされたすべてのアンカーを非表示にする場合は、#your_link_idを$( "a")のように置き換えます。また、アンカータグにクラスがある場合は、$( "a.myClass")のように、そのクラスに基づいて非表示にすることができます。
アップデート:
コメントに関連して、コードは次のようになります。
$(document).ready(function() {
$("a:not(.clickedOnce)").click(function() {
$(this)
.addClass("clickedOnce")
.on("click", function()
{
$(this).hide();
});
});
});
基本的に、リンクをクリックすると、clickedOnceという名前のクラスが追加されます。その後、.on()を使用して、このリンクに2回目のクリックで非表示にするように指示します。
お役に立てれば。
編集:これがどのように機能するかのサンプルは次のとおりです:http://jsfiddle.net/rvQ4w/23/
メソッドの使用時に実際に起動するリンクを取得するにhide
は、メソッドにコールバックを含めてhide()
trueを返す必要があります。これにより、元のイベントコールバックにバブルアップします。main関数でtrueを返すだけのテストは機能しなかったので、このhide
メソッドはイベントの伝播を短絡する必要があると思います。2回目にクリックした後にのみ起動するようにするため、click
イベントを2回バインドする必要があります。最初のクリックは、その要素の後続のクリックイベントをhide
メソッドにバインドする関数を呼び出します。基本的には2番目のレイヤーです。
$("a").on('click', function(e) {
$(this).on('click', function() {
$(this).hide();
});
});
2回目のクリックで実際にプライマリイベントを2回目に発生させたくない場合(テキストを表示するが、2回目のクリックでテキストを再表示したくない場合など)、バインドを解除する必要があります。次のようなプライマリイベント:
$("a").on('click', function(e) {
$(this).unbind(e);
$(this).on('click', function() {
$(this).hide();
});
});