2013-02-10 56 views
1

嗨可以有人请帮助,即时通讯试图找到一种方法,每次用户会话被点击一次后,禁用链接,我可以这样做在jQuery中?使用jquery点击一次后禁用链接?

我是javasript和jquery的全新新人,所以有人请告诉我什么id需要做的感谢。

+0

事件处理程序和饼干。这应该引导你走向前进的道路。 – Joseph 2013-02-10 02:49:19

+0

可能重复[“禁用”一个链接暂时点击?](http://stackoverflow.com/questions/5380722/disable-a-link-temporarily-when-clicked) – 2013-02-10 02:49:24

+0

我不想暂时禁用链接。我想保持它禁用。 – 2013-02-10 02:51:19

回答

3

绑定event.preventDefault()以防止链接后的默认浏览器事件。只在随后的点击上进行操作(这样在第一次点击时它就会允许它 - 这就是你想要的)。

$(".oncelink").one('click',function(e){ 
    $(this).on('click',function(ev){ 
     ev.preventDefault(); 
    }); 
}); 
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'); 
    } 
}); 
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(); 
}