1

私はryanbのsimple_nested_formを使用しており、次のコードがあります

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

このリンクを1回だけ実行すると、非表示になります。jqueryまたはajaxを使用する必要があると思いますが、ajax/jqueryについてはよくわかりません。このリンクを1回だけ実行させる方法を誰かが提案できますか?前もって感謝します。

4

2 に答える 2

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/

于 2012-04-25T09:44:05.863 に答える
1

メソッドの使用時に実際に起動するリンクを取得するに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();
    });
});
于 2012-04-25T10:12:06.920 に答える