Я пытаюсь создать таблицу сравнения на основе выбранных входных данных из выпадающего списка. Данные для заполнения таблицы хранятся в отдельном файле .json.
Хотя таблица строится, как и ожидалось, по какой-то причине она не позволяет мне применять к ней функциональные возможности jQuery. Когда я пытаюсь использовать плагин или код jQuery для пользовательского форматирования таблицы на основе значения ячейки, я не могу этого сделать.
JS Fiddle: https://jsfiddle.net/mithunu/0b64s8ka/9/
Массив JSON:
var StatJSON = {
"Samsung": {
"Parameter1": "<div id=\"rating1\"> 40 </div>",
"Parameter2": "<div id=\"rating2\"> 50 </div>",
"Parameter3": "<div id=\"rating3\"> 30 </div>"
},
"Mi": {
"Parameter1": "<div id=\"rating1\"> 40 </div>",
"Parameter2": "<div id=\"rating2\"> 50 </div>",
"Parameter3": "<div id=\"rating3\"> 30 </div>"
},
"Apple": {
"Parameter1": "<div id=\"rating1\"> 50 </div>",
"Parameter2": "<div id=\"rating2\"> 30 </div>",
"Parameter3": "<div id=\"rating3\"> 40 </div>"
}
};
Код jQuery, который я использую, чтобы сгенерировать на основе таблицы выборки, сделанные пользователем:
jQuery('#btnSubmit').click(function() {
var data = [];
jQuery("#selection").find(':selected').each(function(e) {
var this_input = jQuery(this);
if (this_input.is(':selected')) {
data.push(this_input.val());
}
});
$('#divResult').empty().append(PrintTable(data));
});
function PrintTable(data) {
var html = '<table class="compTable"><tr><td>';
if (data && data.length) {
html += '</td>';
jQuery.each(data, function(k, v) {
html += '<td id="myHeader" class="header2">' + v + '</td>';
});
html += '</tr>';
jQuery.each(StatJSON[data[0]], function(k, v) {
html += '<tr><td>' + k + '</td>';
jQuery.each(data, function(k2, v2) {
html += '<td>' + StatJSON[data[k2]][k] + '</td>';
});
html += '</tr>';
});
} else { html += 'No results found</td></tr>'; }
html += '</table>';
return html;
}
});
Некоторые из jQuery (пример), предназначенные для таблицы:
jQuery('#myHeader tr td').each(function($){
if($(this).text() == 'Samsung')$(this).css("background-color","red");
if($(this).text() == 'Mi')$(this).css("background-color","blue");
if($(this).text() == 'Apple')$(this).css("background-color","green");
});
jQuery('#rating1 tr td').each(function($){
if($(this) = '40')$(this).css("background-color","red");
if($(this) = '30')$(this).css("background-color","blue");
if($(this) = '50')$(this).css("background-color","green");
});
Один из плагинов, которые я пытаюсь использовать для форматирования таблицы, это плагин строки рейтинга от github: https://github.com/mre/jquery.ratingbar/
Этот плагин требует, чтобы я кодировал значение в JSON с помощью div:
<div class="rating">80</div>
Требуется jquery:
$(document).ready(function() {
$('.rating').ratingbar();
});
Но jquery не выполняется, когда я кодирую значение в JSON с помощью div. Как мне это сделать?