Javascript jQuery对象引用问题 功能启动活动(索引、活动id){ var btn=$(“#toggleStateBtn'+索引); html(“”); btn.removeClass(“btn-success”); btn.addClass(“btn-警告”); btn.attr(“标题”,“暂停此活动”); btn.宽度('9px'); //发起运动 $.ajax({ url:'/campaign/startcompaign/'+campaign\u id, 键入:“POST”, 成功:功能(数据){ //在状态列中反映新状态 html(数据); } }); } 功能PauseCompaign(索引、活动id){ var btn=$(“#toggleStateBtn'+索引); html(“”); btn.removeClass(“btn-warning”); btn.addClass('btn-success'); btn.attr(“标题”,“运行此活动”); btn.宽度('9px'); //暂停活动 $.ajax({ url:'/campaign/pauseCampaign/'+campaign\u id, 键入:“POST”, 成功:功能(数据){ //在状态列中反映新状态 html(数据); } }); }

Javascript jQuery对象引用问题 功能启动活动(索引、活动id){ var btn=$(“#toggleStateBtn'+索引); html(“”); btn.removeClass(“btn-success”); btn.addClass(“btn-警告”); btn.attr(“标题”,“暂停此活动”); btn.宽度('9px'); //发起运动 $.ajax({ url:'/campaign/startcompaign/'+campaign\u id, 键入:“POST”, 成功:功能(数据){ //在状态列中反映新状态 html(数据); } }); } 功能PauseCompaign(索引、活动id){ var btn=$(“#toggleStateBtn'+索引); html(“”); btn.removeClass(“btn-warning”); btn.addClass('btn-success'); btn.attr(“标题”,“运行此活动”); btn.宽度('9px'); //暂停活动 $.ajax({ url:'/campaign/pauseCampaign/'+campaign\u id, 键入:“POST”, 成功:功能(数据){ //在状态列中反映新状态 html(数据); } }); },javascript,jquery,Javascript,Jquery,出于某种原因,这导致了奇怪的行为。如果在所有位置用$('#toggleStateBtn'+index)替换btn,则一切正常 我的猜测是,例如,如果您首先调用startCampaign(),然后调用pauseCampaign(),那么旧的btn引用将更改为新的btn引用。但我不确定 想法?不管我是白痴,btn.html(数据)中的btn实际上是一个不同的控件。我在无意识地替换。看来我今天早上需要多加一剂咖啡因。你有什么错误?不是错误,只是奇怪的行为。就像我在按钮中看到的ajax响应,而不是按钮图

出于某种原因,这导致了奇怪的行为。如果在所有位置用
$('#toggleStateBtn'+index)
替换btn,则一切正常

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


想法?

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

你有什么错误?不是错误,只是奇怪的行为。就像我在按钮中看到的ajax响应,而不是按钮图标。我有点困惑,你能解释一下这段代码在做什么和你期望它做什么吗?我相信这是因为缓存(可能不是描述我所说内容的合适词)。它保存该变量当时的状态,而不是更新。
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);
        }
    });
}