最初,我动态创建一些元素,如下所示:
var newItem = '<div title="' + elem.IP + '" id="' + elem.Alias + '-Status" class="elementStatus"><div class="image" id="' + elem.Alias + '-StatusImg"></div><div id="' + elem.Alias + '-StatusTxt" class="text">Waiting...</div></div>';
稍后,我在单击页面中的按钮后执行 jquery ajax 调用,如下所示:
function doTask(task, urlDoTask) {
return ajax({
url: this.getRootDir() + urlDoTask,
data: { hostNameOrAddress: task.IP },
beforeSend: setStatusTxt(task.Alias, 1),
type: 'POST'
}).then(function (data) {
setStatusTxt(task.Alias, 2);
return ok(createObject("status", "ok", "op", "doTask", "task", task, "data", "OK"));
}, function (data) {
setStatusTxt(task.Alias, 3);
return ok(createObject("status", "fail", "op", "doTask", "task", task, "data", "KO"));
});
}
我要做的是通过在发送ajax调用和ajax调用完成之前调用setStatusTxt函数来用新的文本和字体颜色更新(elem.Alias +'-StatusTxt')div的内容(文本)(成功与否) ), 见下文:
function setStatusTxt(elemId, msgType) {
if (msgType === 1) {
$('#' + elemId + '-StatusTxt').text("Ongoing...").addClass("hilightedStatusTxtOngoing");
}
else (msgType === 2) {
$('#' + elemId + '-StatusTxt').text("OK").addClass("hilightedStatusTxtOK");
}
else {
$('#' + elemId + '-StatusTxt').text("KO").addClass("hilightedStatusTxtKO");
}
}
CSS:
.hilightedStatusTxtOngoing
{
color: inherit;
}
.hilightedStatusTxtOK
{
color: Green;
}
.hilightedStatusTxtKO
{
color: Red;
}
第一次点击页面上的按钮,它工作正常:文本正确更新,字体颜色正确(我应该说第一次,浏览器历史记录和 cookie,所有内容都被删除,但下次不会)。任务完成后,在视图页面中将保留 div 内容中具有当前颜色的文本。现在,在这种状态下,如果我通过单击页面中的按钮再次执行 ajax 调用,并且 msgType(作为参数传递给 setStatusTxt 函数)与当前不同,则文本('#' + elemId +'-StatusTxt ' div 的内容)被正确更新/刷新为新的,但没有使用正确的颜色,我的意思是,字体颜色不会用新的颜色更新/刷新,新的文本仍然使用以前的颜色。
为什么文本颜色没有更新?