Way*_*yne 5 javascript jquery json
使用来自JSON数据的动态生成的HTML,我试图为每个添加一个类.status-card,在这种情况下取决于值c.callStatus.这是我得到的最接近的,但这只是active为所有人增加了课程status-card.我猜它与我如何使用$(this)或我错过了其他东西有关?
$(function() {
var agents = [];
$.getJSON('js/agents.json', function(a) {
$.each(a.agents, function(b, c) {
var content =
'<div class="status-card">' +
'<div class="agent-details">' +
'<span class="agent-name">' + c.name + '</span>' +
'<span class="handling-state">' + c.callStatus + '</span>' +
'<span class="handling-time">' + c.handlingTime + '</span>' +
'</div>' +
'<div class="status-indicator"></div>' +
'</div>'
$(content).appendTo('#left');
//Add class depending on callStatus
$('.status-card').each(function() {
if (c.callStatus == 'On Call') {
$(this).removeClass('idle away').addClass('active');
} else if (c.callStatus == 'Idle') {
$(this).removeClass('active away').addClass('idle');
} else {
$(this).removeClass('active idle').addClass('away');
}
console.log(c.callStatus);
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
谢谢!
$('.status-card').each()您正在为列表agent中的每个人打电话a.agents。因此,在最终迭代中,所有.status-card元素都将具有最后agent.callStatus评估的类。
我会写这样的东西。
$(function() {
function createStatusCard(name,callStatus,handlingTime) {
var status_class_map = {
"On Call" : "active",
"Idle" : "idle"
};
var $content = $("<div/>").addClass("status-card").addClass(function(){
return status_class_map[callStatus] || "away";
});
$content.html('<div class="agent-details">' +
'<span class="agent-name">' + name + '</span>' +
'<span class="handling-state">' + callStatus + '</span>' +
'<span class="handling-time">' + handlingTime + '</span>' +
'</div>' +
'<div class="status-indicator"></div>');
return $content;
}
$.getJSON('agents.json', function(a) {
$.each(a.agents, function(b, c) {
$("#left").append(createStatusCard(c.name,c.callStatus,c.handlingTime));
});
});
});
Run Code Online (Sandbox Code Playgroud)
它更具可读性并且更容易调试。
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |