#jquery #jstl
#jquery #jstl
Вопрос:
У меня возникла необходимость передать объект из jstl в обработчик щелчков Jquery.
Мой пользовательский интерфейс отображает древовидную структуру. Узлы, составляющие дерево, используют свойство name, которое является значением, отображаемым пользователю. Это свойство name взято из объекта «node». Есть ли какой-либо способ передать объект «node» в мою функцию jquery при нажатии на один из узлов дерева?
Мой jstl выглядит следующим образом
<c:forEach var="node" items="${object.childItems}">
<li>
<a href="#" class="node"><c:out value="${node.name}"/></a>
<c:set var="node" value="${node}" scope="request"/>
<jsp:include page="child.jsp"/>
</li>
</c:forEach>
Затем у меня есть событие щелчка jquery, прикрепленное к классу «.node» каждой ссылки href. При нажатии на href я хочу иметь доступ ко всем значениям в «node» в моем обработчике щелчков Jquery. Каков наилучший способ сделать это? Спасибо
Ответ №1:
У вас есть несколько доступных вариантов в зависимости от того, что вы хотите сделать?
- Вы можете сохранить значения узлов в HTML в виде идентификаторов / скрытых полей или используя атрибуты данных, а затем, когда в нашем обработчике событий click вы получите, используйте jQuery selector для создания объекта JSON.
- Вы можете просто сохранить идентификатор узла, а затем выполнить Ajax-запрос к серверу, который может вернуть объект JSON.
Обычно я использую вариант 1, если все данные, которые мне нужны для объекта, уже отображаются на странице, чтобы уменьшить количество вызовов сервера.
Или вариант 2, если у объекта есть дополнительные поля, к которым вы хотите получить доступ, но которые не нужно отображать в списке, чтобы уменьшить объем вашей HTML-страницы.
Комментарии:
1. Спасибо. я хотел избежать использования скрытых полей, потому что у меня много значений, однако он по-прежнему предлагает более быстрое решение, чем возврат к серверу при каждом нажатии.
2. Затем используйте атрибуты данных jQuery