jQuery更改元素的内容

时间:2011-12-13 18:01:51

标签: jquery

可能重复:jquery change div text

以上问题可能重复,但我不知道为什么它不起作用。我也是jQuery的新手。

以下是该功能的一部分(我现在所写的全部内容)。正在使用锚点标记的onclick事件触发它。

function changeStatus(user)
{
    var esc = true;
    $.get('ajax/popupBase.html', user, function(data, stat, d) {
        $("#AjaxFrame").html(data);
    }, 'html');

    $.get('ajax/changeStatus.html', user, function(data, stat, d) {
        $("#PopupBody").html(data);
    }, 'html');

    $("#AjaxFrame").fadeIn('fast');
    $("#PopupTitle").html("Status Update");
    $("#Popup").center();
    popupState = 1;

    return esc;
}

以下是我与$.get()一起使用的模板“popupBase.html”:

注意:“popupBase.html”是我在此网站上可重现的“弹出窗口”窗口,我可以将数据插入空div,并尽可能重用html

<div id="Popup">
    <form id="Popup1" method="post">
        <div id="PopupTitle"></div>

        <div id="PopupBody"></div>

        <input class="button" id="Save" name="saveChanges" type="submit" value="OK" />
        <input class="button" id="Cancel" name="clearChanges" type="button" value="Cancel" />
    </form>
</div>

#AjaxFrame是我网站上所有html之外的容器(位于<body>内,#Wrapper之外)。我的$.get()来电,我的模板上还有两个空容器,名为#PopupTitle#PopupBody

问题:将从“changeStatus.html”检索到的html插入#PopupBody工作正常,但是,从#PopupTitle添加静态文本无法正常工作。在this possible duplicate的回答中,我尝试使用.text()无效。

编辑:针对未来读者的说明,我将在每次使用后清除#AjaxFrame的内容,应该续订ID使用情况。

我尝试过的其他事情:清除Chrome的缓存(包括最新版本和portableapp版本)并反复检查拼写错误。

我对这一点感到困惑,感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

你遇到竞争条件,javascript不会等到那些$ .get函数完成后再运行它之后发生的事情。

如果你希望“状态更新”在你的ajax运行过程之后在PopupTitle中,它必须进入成功处理程序

function changeStatus(user)
{
    var esc = true;
    $.get('ajax/popupBase.html', user, function(data, stat, d) {
        $("#AjaxFrame").html(data);
    }, 'html');

    $.get('ajax/changeStatus.html', user, function(data, stat, d) {
        $("#PopupBody").html(data);
        $("#PopupTitle").html("Status Update");   //will over write what is in data
    }, 'html');

    $("#AjaxFrame").fadeIn('fast');

    $("#Popup").center();
    popupState = 1;

    return esc;
}