2013-07-03 2 views
3

Я хочу включить/отключить событие click для элемента. У меня следующий код ...Включение/выключение события Click для элемента с помощью jQuery

HTML:

<a id="CP" style="cursor: pointer; text-decoration: underline;">Current Processes</a> 

JQuery:

$(document).on("click", "#CP", function(event) { 
    $this = $(this); 
    $this.click(function() { 
     return false; 
    }); 
    $this.html("Processing...").css({ 
     "text-decoration": "none", 
     "cursor": "default" 
    }); 
    $.ajax({ 
     type: 'post', 
     url: 'abc.jsp', 
     success: function(process) { 
      //My code goes here... 
      $this.on("click"); // Here i want to bind or add handler which is fired previously. 
     } 
    }); 
}); 
+0

набор 'HREF = "#"' и 'удалить этот курсор: pointer'. Вы используете 'anchor' как' div' – steo

+0

, почему вы хотите это сделать? это вы хотите только зарегистрировать событие один раз? если это так, то вы можете использовать событие 'one' http://api.jquery.com/one/ – Qpirate

ответ

5

Если я хорошо понимаю, вы могли бы сделать это очень просто следующим:

$this.html("Processing...").css({ 
    "cursor": "wait", 
    "pointer-events": "none" 
}); 
0

$this.on("click") - это эффективно: "привязать обработчик щелчка к $ это, что не будет делать ничего"

Для запуска использования события: $this.click() или $this.trigger("customEvent")

0

Может быть, вы должны использовать bind("click"), чтобы вы могли отвязать его. например, $("#CP").bind("click",function(){..function to run // disable the click event from CP $("#CP").unbind("click"); });. Удачи!

0
var eventhandler = function() { 

    $(document).unbind("click"); 
    $this.html("Processing...").css({ 
     "text-decoration": "none", 
     "cursor": "default" 
    }); 
    $.ajax({ 
     type: 'post', 
     url: 'abc.jsp', 
     success: function(process) { 
      //My code goes here... 
      //Here i want to bind or add handler which is fired previously. 
      $(document).click(eventhandler); 
     } 
    }); 
} 


jQuery(document).click(eventhandler); 
1

Добавить класс при выполнении запроса AJAX. Удалите, когда закончите. Не делайте ничего, если ссылка имеет этот класс.

$(document).on("click", "#CP", function(event) { 
    event.preventDefault(); 
    $a = $(this); 
    if($a.hasClass('disabled')) { 
     return false; 
    } 

    $a.html("Processing...").addClass('disabled'); 
    $.ajax({ 
     type: 'post', 
     url: 'abc.jsp', 
     success: function(process) { 
      $a.removeClass('disabled'); 

      // restore inner HTML here 
     } 
    }); 
}); 
Смежные вопросы