Javascript .live禁用双击

Javascript .live禁用双击,javascript,jquery,Javascript,Jquery,可能重复: 这是我的代码: $('.answerx').live('click', function(){ comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'"); }) 我想这样做,一旦点击完成,用户就无法再次点击并运行函数,因为函数多次运行会让我的程序变得疯狂 那么,有没有一种方法可以使其在单击后禁用对id为$(this.attr('id')的特定元素的进一步单击,您可以将单击的对象标记为这样的对象。有

可能重复:

这是我的代码:

$('.answerx').live('click', function(){
    comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'");
})
我想这样做,一旦点击完成,用户就无法再次点击并运行函数,因为函数多次运行会让我的程序变得疯狂


那么,有没有一种方法可以使其在单击后禁用对id为
$(this.attr('id')
的特定元素的进一步单击,您可以将单击的对象标记为这样的对象。有很多方法可以做到这一点。例如,添加一个类

$('.answerx').live('click', function(){
  if(!$(this).hasClass('disabled')) {
    comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'");
    $(this).addClass('disabled');
  }
})
添加类的另一个好处是,您可以分别设置禁用元素的样式。

保持简单:

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

 });


或者使用现代的
.off()

解除绑定
在这里不起作用。它只会解除与
bind
绑定的事件处理程序的绑定。
die
的问题是,它删除了所有元素的事件处理程序,而不仅仅是单击的元素。这就是为什么我提供了第一个备选方案。这具有相同的效果,或者每个元素都有
boolHasBeenRun
?单击一个元素后,将不会为其他元素执行处理程序。你是对的,我只是在考虑一个元素。因此,无论我有多少个元素。answerx,这将只应用于已单击的元素??如果你觉得这个答案有帮助,你应该接受它:-)
 $('.answerx').live('click', function(){
       comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'");
        $('.answerx').die('click');        

 });