#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]». Вы можете принять мой ответ?