Reputation: 305
My server sends json (note the DISPLAY_CHECKBOX var)
{"MY_DATA":[{"ID":270336,"STATUS":"live","STATUS_DISPLAY_ORDER":6,"DISPLAY_CHECKBOX":0},{"ID":224808,"STATUS":"archived","STATUS_DISPLAY_ORDER":1,"DISPLAY_CHECKBOX":1},{"ID":139066,"STATUS":"tbd","STATUS_DISPLAY_ORDER":2,"DISPLAY_CHECKBOX":0}]}
I want to loop over the json creating html. My question is how best to handle the switch around the checkbox? ie How to make the checkbox display or not depending on the the DISPLAY_CHECKBOX value?
$.each(data.MY_DATA, function(index){
var myhtml = '<div class="panel panel-default">\
<div class="panel-heading">\
if(this.DISPLAY_CHECKBOX == 1) {<input type="checkbox"> }\
</div>\
<div class="panel-body">'+this.STATUS+'</div>
</div>';
$('#container').append(myhtml);
});```
Upvotes: 0
Views: 35
Reputation: 178350
Like this - using a template literal and a ternary
myHtml.push(`<div class="panel panel-default">
<div class="panel-heading">
${ this.DISPLAY_CHECKBOX ? `<input type="checkbox">` : "" }
</div>
<div class="panel-body">${this.STATUS}</div>
</div>`);
const data = {
"MY_DATA": [{
"ID": 270336,
"STATUS": "live",
"STATUS_DISPLAY_ORDER": 6,
"DISPLAY_CHECKBOX": 0
}, {
"ID": 224808,
"STATUS": "archived",
"STATUS_DISPLAY_ORDER": 1,
"DISPLAY_CHECKBOX": 1
}, {
"ID": 139066,
"STATUS": "tbd",
"STATUS_DISPLAY_ORDER": 2,
"DISPLAY_CHECKBOX": 0
}]
}
const myHtml = [];
$.each(data.MY_DATA, function(index) {
myHtml.push(`<div class="panel panel-default">
<div class="panel-heading">
${ this.DISPLAY_CHECKBOX ? `<input type="checkbox">` : "" }
</div>
<div class="panel-body">${this.STATUS}</div>
</div>`);
})
$('#container').html(myHtml.join(""));
.panel { border: 1px solid black; width:200px; margin:10px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container"></div>
For IE11 and under
myHtml.push('<div class="panel panel-default">'+
'<div class="panel-heading">'+
(this.DISPLAY_CHECKBOX ? '<input type="checkbox">' : "") +
'</div>' +
'<div class="panel-body">'+this.STATUS+'</div>'+
'</div>');
const data = {
"MY_DATA": [{
"ID": 270336,
"STATUS": "live",
"STATUS_DISPLAY_ORDER": 6,
"DISPLAY_CHECKBOX": 0
}, {
"ID": 224808,
"STATUS": "archived",
"STATUS_DISPLAY_ORDER": 1,
"DISPLAY_CHECKBOX": 1
}, {
"ID": 139066,
"STATUS": "tbd",
"STATUS_DISPLAY_ORDER": 2,
"DISPLAY_CHECKBOX": 0
}]
}
const myHtml = [];
$.each(data.MY_DATA, function(index) {
myHtml.push('<div class="panel panel-default">'+
'<div class="panel-heading">'+
(this.DISPLAY_CHECKBOX ? '<input type="checkbox">' : "") +
'</div>' +
'<div class="panel-body">'+this.STATUS+'</div>'+
'</div>');
})
$('#container').html(myHtml.join(""));
.panel { border: 1px solid black; width:200px; margin:10px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container"></div>
Upvotes: 1