.live禁用双击

时间:2011-12-23 21:04:23

标签: javascript jquery

  

可能重复:
  is there a way to force event to fire only once on given element (per element, not whole document) when using live()?

这是我的代码:

$('.answerx').live('click', function(){
    comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'");
})

我想这样做,一旦点击完成,用户就无法再次点击并运行该功能,因为多次运行的功能让我的程序变得疯狂。

有没有办法让它在点击一次后禁用对id为$(this).attr('id')的特定元素的进一步点击

2 个答案:

答案 0 :(得分:3)

您可以将点击的对象标记为这样。有很多方法可以做到这一点。例如,添加一个类。

$('.answerx').live('click', function(){
  if(!$(this).hasClass('disabled')) {
    comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'");
    $(this).addClass('disabled');
  }
})

添加类的其他好处是可以分别设置disabled元素的样式。

答案 1 :(得分:1)

保持简单:

var boolHasBeenRun = false;
$('.answerx').live('click', function(){
    if(boolHasBeenRun === false){
       comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'");
       boolHasBeenRun = true;
    }

 });

或者

 $('.answerx').live('click', function(){
       comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'");
        $('.answerx').die('click');        

 });

或使用现代.off()