1

こんにちは、誰か助けてください。ユーザーセッションごとにリンクが1回クリックされた後にリンクを無効にする方法を見つけようとしています.jqueryでこれを行うことはできますか?

私はjavasriptとjqueryを初めて使用するので、誰かが何をする必要があるのか​​教えてください。

4

3 に答える 3

3

event.preventDefault()をバインドして、リンクをたどるデフォルトのブラウザイベントを防ぎます。それ以降のクリックでのみ実行します(最初のクリックでそれが許可されるようにします-これはあなたが望むものです)。

$(".oncelink").one('click',function(e){
    $(this).on('click',function(ev){
      ev.preventDefault();
    });  
});
于 2013-02-10T02:50:55.243 に答える
1

この種のロジックが機能するには、サーバー側にもチェックを入れる必要があります。しかし、jQueryを使用するクライアント側では、次のようなことができます

$('a').on('click', function()
{
    var me = $(this);
    //You can also set some attribute value if you do not want to use class
    if(me.hasClass('disabled'))
    {
        return false;
    }
    else
    {
        me.addClass('disabled');
    }
});
于 2013-02-10T02:53:42.797 に答える
0

HTTP 接続間で状態を保持する方法は、Cookie を使用することです。クライアント側のCookieの設定/取得は面倒になる可能性があるため、Cookieの設定/取得にはサーバー側の言語を使用する必要があり、言うまでもなく安全でなく悪用されやすい. また、ユーザーがブラウザーで JS をオフにしている場合、これは機能せず、努力が無駄になります。ただし、次のようになります。

// on dom ready

var onceButton = document.getElementById('once');
function disableButton () {
    onceButton.disabled = 'disabled';
    document.cookie="disable_button=1";

    // prevent listening on future clicks
    onceButton.removeEventListener('click', disableButton, false); 
}

if (document.cookie.indexOf('disable_button=1;') === -1) { 
    // if no cookie set, wait until click happens to disable button
    onceButton.addEventListener('click', disableButton, false);
} else {
    // cookie set, disable immediately
    disableButton();
}
于 2013-02-10T03:11:07.760 に答える