禁用.click()然后重新启用它

时间:2015-02-19 00:35:04

标签: javascript jquery

所以我试图这样做,以便一旦点击一个元素,点击功能将无法工作,直到我的$.post完成。

<div id="textbox_item">Click me</div>

这就是我现在所拥有的,但它不起作用。我假设.prop('disabled', true)不适用于div元素。谁能帮助我?

$("#textbox_item").click(function() {

    //don't let anyone click .textbox_item until $.post is complete
    $("#textbox_item").prop('disabled', true).text("Doing something..");

    $.post("/action", { item: "123" }).done(function( data ) { 
        $("#textbox_item").prop('disabled', false).text("Click me");        
    });

});

3 个答案:

答案 0 :(得分:1)

考虑设置并检查.data()是否有“禁用”数据属性。

$(".textbox_item").click(function() {
    //don't do anything if #textbox_item has been disabled
    if($("#textbox_item").data('disabled')) { return false; }

    //don't let anyone click .textbox_item until $.post is complete
    $("#textbox_item").data('disabled', true).text("Doing something..");

    $.post("/action", { item: "123" }).done(function( data ) { 
        $("#textbox_item").data('disabled', false).text("Click me");
    });

});

我还注意到你似乎在混合ID和类选择器 - 我不知道这是否是故意的,但我建议仔细检查以确保你知道你正在禁用并点击。< / p>

答案 1 :(得分:0)

这里有两个问题:

  • 您尝试在无法工作的div上使用按钮属性。 HTML Disable属性不适用于div。
  • 您正在混合选择器。您的Click me div有一个班级textbox_item,但您的电话$("#textbox_item")正在寻找textbox_item作为内容而不是班级的内容。每次要引用此元素时都应使用$(".textbox_item")

<强> HTML

<button class="textbox_item">Click me</button>

<强> JS

$(".textbox_item").click(function()
    $(this).prop('disabled', true);
    $.post("/action", { item: "123" }).done(function( data ) { 
       $(".textbox_item").prop('disabled', false);
    });
});

答案 2 :(得分:0)

为什么不专门为此使用jquery库提供的函数?

http://api.jquery.com/one/

button.one('click', function() {
     //on ajax success
     Button.one('click', func)
})