jquery, работающий с объектами

#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:

У вас есть несколько доступных вариантов в зависимости от того, что вы хотите сделать?

  1. Вы можете сохранить значения узлов в HTML в виде идентификаторов / скрытых полей или используя атрибуты данных, а затем, когда в нашем обработчике событий click вы получите, используйте jQuery selector для создания объекта JSON.
  2. Вы можете просто сохранить идентификатор узла, а затем выполнить Ajax-запрос к серверу, который может вернуть объект JSON.

Обычно я использую вариант 1, если все данные, которые мне нужны для объекта, уже отображаются на странице, чтобы уменьшить количество вызовов сервера.

Или вариант 2, если у объекта есть дополнительные поля, к которым вы хотите получить доступ, но которые не нужно отображать в списке, чтобы уменьшить объем вашей HTML-страницы.

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

1. Спасибо. я хотел избежать использования скрытых полей, потому что у меня много значений, однако он по-прежнему предлагает более быстрое решение, чем возврат к серверу при каждом нажатии.

2. Затем используйте атрибуты данных jQuery