0

所以我有一个 jquery 函数,可以在单击锚标记时执行某些操作。现在我想让按钮在后续单击时对 jquery 无响应。我应该怎么办?我正在做的是在第一次单击时更改锚标记的 innerHTML 并进行 AJAX 调用,在此期间,当用户再次单击相同的锚标记时,我不希望发生任何事情。

这就是我通过 jquery 处理点击的方式

  $('.profileEdit label a').live('click', function () {
     // do something
  });
4

2 回答 2

2

如果我了解您想要什么,您可以在 ajax 调用之前删除“onclick”属性并在最后重新设置(成功或失败)。

@EDIT:最终解决方案代码

function update(){
$("#bb").html('Updating');
$("body").off('click',"#bb");
 $.ajax({
            type: "POST",
            url:"profileUpdate.asmx/HelloWorld",
            data: "{ 'value': '" + document.getElementById(string).value + "'" + ",'column':'" + string  + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                defaultSetter();                  
            },
            error: function (msg) {
                defaultSetter();
            }
        });

}

function defaultSetter(){
    $("#bb").html("Test");
    $("body").on('click','#bb', update);
}

$(document).ready(function(){
    defaultSetter();
});

jsfiddle:http: //jsfiddle.net/V3AAF/

bb 元素是一个按钮,而不是一个锚点

于 2013-04-30T23:57:50.307 回答
1

如果您只希望操作在第一次单击时发生一次,您不能只使用one()吗?

$('.profileEdit label a').one('click', function () {
     alert('This will only alert on the first click');
});

如果您在该元素上发生了进一步点击的处理程序,只需使用 return false,以防止在第一次点击后发生任何事情:

$('a').on('click', function () {
    return false;
    alert('first time!');
});

jsFiddle 示例。

于 2013-04-30T23:54:32.153 回答