jQuery对象引用问题

时间:2013-06-11 14:43:38

标签: javascript jquery

function startCampaign(index, campaign_id) {
    var btn = $('#toggleStateBtn' + index);
    btn.html('<i class="icofont-pause"></i>');
    btn.removeClass('btn-success');
    btn.addClass('btn-warning');
    btn.attr('title', 'Pause this campaign');
    btn.width('9px');

    // Start campaign
    $.ajax({
        url:    '/campaign/startCampaign/' + campaign_id,
        type:   'POST',
        success: function(data){
            // Reflect the new state in status column
            btn.html(data);
        }
    });
}

function pauseCampaign(index, campaign_id) {
    var btn = $('#toggleStateBtn' + index);
    btn.html('<i class="icofont-play"></i>');
    btn.removeClass('btn-warning');
    btn.addClass('btn-success');
    btn.attr('title', 'Run this campaign');
    btn.width('9px');

    // Pause campaign
    $.ajax({
        url:    '/campaign/pauseCampaign/' + campaign_id,
        type:   'POST',
        success: function(data){
            // Reflect the new state in status column
            btn.html(data);
        }
    });
}

由于某种原因,这会导致奇怪的行为。如果你在所有地方用$('#toggleStateBtn' + index)替换btn,那么一切正常。

我的猜测是,如果您首先调用startCampaign()然后调用pauseCampaign(),则旧的btn引用将更改为新的btn引用。但我不确定。

想法?

1 个答案:

答案 0 :(得分:1)

没关系我是个白痴,btn.html(数据)中的btn实际上是一个不同的控件。我无意识地代替了。看起来我今天早上需要多一剂咖啡因。