У меня есть небольшая программа, которая включает в себя таблицу со строками, каждая строка содержит изображение «я». Если щелкнуть «i» рядом с элементом, откроется более подробный вид элемента, при повторном нажатии «i» элемента SAME следует закрыть более подробный вид ( Ваш универсальный c функция переключения). Однако мне нужно иметь дополнительную функциональность, чтобы при нажатии на «i» другого элемента он не закрывал подробное представление, а просто обновлял правую сторону. В этой части мне удалось получить работу (первая функция). У меня возникли проблемы с закрытием подробного представления, если щелкнуть ту же букву «i».
function toggleDetailsView() {
let parentId;
if (dom.$detailsView.is(':hidden')) {
showDetailsView();
parentId = $(this).parent('tr').get(0).id;
} else {
if (parentId) {
console.log(parentId);
if (parentId !== $(this).parent('tr').get(0).id) {
hideDetailsView();
}
}
}
}`
Поэтому я подумал, что могу сохранить идентификатор каждой строки (каждый tr имеет уникальный идентификатор) а затем сравните два идентификатора. Если подробный вид открыт и идентификаторы совпадают, закройте подробный вид. Если подробный вид открыт и идентификаторы отличаются, оставьте подробный вид открытым. Если подробный вид скрыт, просто сделайте его видимым. Я пытаюсь сделать это во второй функции, но я сталкиваюсь с некоторыми проблемами. А именно, я просто не знаю, как сохранить предыдущий и текущий идентификатор элемента, чтобы проверить их.
function toggleDetailsView() {
const initialParentId = $(this).parent('tr').get(0).id;
let nextParentId;
if (dom.$detailsView.is(':hidden')) {
showDetailsView();
} else if (dom.$detailsView.is(':visible')) {
nextParentId = $(this).parent('tr').get(0).id;
if (nextParentId === initialParentId) {
hideDetailsView();
} else if (nextParentId !== initialParentId) {
showDetailsView();
}
}
}`
Спасибо всем, кто может помочь!