使用jQuery启用/禁用元素的Click事件

时间:2013-07-03 11:48:30

标签: jquery events

我希望在元素上启用/禁用单击事件。我有以下代码......

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.
        }
    });
});

6 个答案:

答案 0 :(得分:7)

如果我理解得很好,你可以用以下方法做到这一点:

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

答案 1 :(得分:3)

执行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
        }
    });
});

答案 2 :(得分:0)

$this.on("click") - 这实际上是:“将点击处理程序绑定到$ this,它什么都不做”

要触发事件,请使用:$this.click()$this.trigger("customEvent")

答案 3 :(得分:0)

可能你应该使用bind("click")所以你也可以解开它。例如$("#CP").bind("click",function(){..function to run // disable the click event from CP $("#CP").unbind("click"); });。祝你好运!

答案 4 :(得分: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);

答案 5 :(得分:0)

使用 javaScript 提交表单时,您可能遇到了常见问题,如果多次单击“提交”按钮,则表单数据将被多次提交。要解决此问题,您只需要在 CSS 帮助下编写一行代码。

document.getElementById("form1").style.pointerEvents="none";