0

我使用 Datatables(jQuery 插件)并且所有行都有许多按钮,可以在其中进行一些思考工作(发送到服务器请求 - 编辑、删除等)。

然后,我想在单击其中一个按钮后,添加类名“已禁用”,然后在完成工作后删除该类。

但未添加“禁用”类。但是,如果我删除$(this).removeClass('disabled');,按钮将与此类! 为什么?还是我当地的问题?

我有这个 HTML

<a id='change-color' class='btn btn-danger'>Change Color</a>

而这个JS代码

$(document).on('click', '#change-color', function(){
    $(this).addClass('disabled');
    var _this = this; // hmm.. can i do it without this spick?..

    $.get('/', function(text){
        if($(_this).hasClass('btn-danger')){
            $(_this).removeClass('btn-danger').addClass('btn-success');
        } else {
            $(_this).removeClass('btn-success').addClass('btn-danger');
        }
    });
    $(this).removeClass('disabled');
});

住在 JSFIDDLE

4

1 回答 1

1

添加课程后,您将立即删除课程;在异步回调执行之前。而是删除回调中的类:

$(document).on('click', '#change-color', function(){
    $(this).addClass('disabled');
    var _this = this; // hmm.. can i do it wihout this stafff?..

    $.get('/', function(text){
        if($(_this).hasClass('btn-danger')){
            $(_this).removeClass('btn-danger').addClass('btn-success');
        } else {
            $(_this).removeClass('btn-success').addClass('btn-danger');
        }
        // Removes the class AFTER the Ajax request completes
        $(this).removeClass('disabled'); 
    });
});
于 2013-07-31T23:45:35.343 回答