jQuery preventDefault()如何删除同一个click事件

时间:2014-05-25 02:39:16

标签: javascript jquery

jQuery - 如何删除click事件的preventDefault(),代码如下所示,

$('button').on('click', 'loader', function(event){
    $.ajax({
          url: 'www.myweb.com/string/index.html',
          type: 'get',
          dataType: 'html',
           success: function(data){ 
             event.preventDefault(); 
             // something else 
           },
            error: function(data){
             // how to remove event.preventDefault(); here?
           }
});

1 个答案:

答案 0 :(得分:2)

正如评论中所指出的,$.ajax函数默认是异步的。因此,成功事件处理程序将在click事件处理程序返回后运行。

如果您确实想这样做,可以将async选项设置为false,将ajax调用指定为同步。

$('button').on('click', 'loader', function (event) {
    $.ajax({
        url: 'www.myweb.com/string/index.html',
        type: 'get',
        dataType: 'html',
        async: false
    }).done(function () {
        event.preventDefault();
    }).fail(function () {
        // Do something else here
    }));

显然你无法实际回滚preventDefaultOnce you call it, you cannot uncall it.因此,仅在success处理程序中调用该方法非常重要(或者,在我的修改示例中,调用done方法)。