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 回答