Разрешить специальные символы в атрибуте кнопки тега

#javascript #html #css #button

Вопрос:

У меня есть кнопка, которая должна иметь некоторые атрибуты/элементы, такие как идентификатор, объяснение, причина и т.д. Эта кнопка добавляется в динамическую таблицу с помощью ajax и плагина dynatable, для добавления кнопок я использую опцию writers и добавляю ее таким образом:

 actions: function (record)
    var btn = "<button class='btn btn-sm action-btn-edit'
             id='"   record.id   "' explanation='"   record.explanation   "'                                       record.explanation   "'><i class='fas fa-edit'></i></button>";
             return "<div class='btn-group'>"   btnEdit   "</div>";
 

эта кнопка будет извлекать данные из таблицы в соответствующие атрибуты кнопки, идентификатор, объяснение, причину.
Проблема в том, что объяснение может быть слишком длинным и также содержать специальные символы, и когда я разворачиваю его, текст в этом атрибуте отображается внутри самой кнопки.

Есть ли какое-либо решение, позволяющее использовать специальные символы в атрибутах, поскольку я думаю, что в этом проблема?

Ответ №1:

Лучшим решением было бы использовать идентификатор кнопки для ссылки на структуру JSON, в которой хранятся данные, в моем примере я просто кэширую данные записи в своей функции визуализации кнопок.

  var _CACHE={}; // we store our data here;

 function editBtn(record){
   _CACHE[record.id] = record; // make a reference to our data in a global
   var btn = "<button class='btn btn-sm action-btn-edit' id='"   record.id   "'>"
   return btn;
 }

 function btnClick(btn){
    // get the record this button represents using its id   
    var data =  _CACHE[btn.id];

    // so something with your data: data.explanation, etc.
 }
 

Комментарии:

1. Спасибо, это кажется отличной идеей, после того, как вы порекомендовали это, я на самом деле придумал идею, которая заключалась в использовании JSON.stringify(запись.объяснение), это действительно что-то делает, и количество текста, отображаемого в кнопке, намного меньше, но внутри кнопки все еще есть текст…

2. Я думаю, с точки зрения дизайна, вам гораздо лучше сделать так, чтобы ваши кнопки ссылались на объекты JSON в вашем приложении. Довольно распространенной практикой является создание объектов кэша вокруг кнопок и элементов, ваша концепция также часто используется для небольших объемов данных, и в этом случае вам следует использовать data-explanation=»{somedata]». Вы можете принять мой ответ?