Похоже, проблема в том, что класс btn имеет "display: inline-block", который портит отображение td как ячейку таблицы.
Я бы предложил добавить кнопку вячейка, вместо того, чтобы сделать саму ячейку кнопкой.
$("table").on("click", "td", function() {
//alert(currentModal);
//alert($(this).val());
var val = parseInt($(this).attr('value'));
if(val > 1 || val < -1 || val === NaN) {
$(this).attr('value', 1);
var btn = $("<button>");
btn.addClass('btn btn-success');
$(this).append(btn);
}
else {
switch(val) {
case -1:
$(this).attr('value', 0);
var btn = $("<button>");
btn.addClass('btn btn-secondary');
$(this).append(btn);
break;
case 0:
$(this).attr('value', 1);
var btn = $("<button>");
btn.addClass('btn btn-success');
$(this).append(btn);
break;
case 1:
$(this).attr('value', -1);
var btn = $("<button>");
btn.addClass('btn btn-danger');
$(this).append(btn);
break;
}
}
});
Это добавит кнопку к таблице каждый раз, когда вы щелкаете по ней. Вам нужно будет добавить код, чтобы предотвратить это.