Я хотел бы узнать, как я могу определить ссылку на целевой элемент любого события клика на странице, которая будет храниться в JSON (для передачи).
Решение не должно полагаться на использование класса или идентификатора цели.
В частности, всякий раз, когда элемент (который может не иметь class
или id
) нажимается на странице, я пытаюсь определить ссылку на целевой элемент, который можно использовать в формате JSON
для передачи, чтобы я мог использовать его на идентичной странице.
Пример использования:
Это тест, в котором два или более пользователя работают вместе в одном интерфейсе с разных устройств
Пользователь 1:
<body>
<div class="body-wrapper">
<button>Click Here</button>
</div>
<div>
<button>Click Me</button>
<div>
<button>Or Click Me</button>
</div>
</div>
</body>
Пользователь 2: (идентичный)
когда кнопка "Click Me" является объектом события клика, слушатель возвращает некоторую ссылку на эту кнопку, которую я могу отправить через Интернет (здесь, где необходим формат JSON)
Результат: я могу повторить щелчок на этой кнопке в DOM User 2.
Редактировать:
Как кратко обсуждается в комментариях к ответам, делегирование событий может использоваться для обработки динамически созданного контента. Является ли это правильной комбинацией ответа на этот вопрос с делегацией событий?
$(document).on("mouseup mousedown click mousemove", function(e) {
var element = e.target.index("body *");
socket.emit("event", element, e);
});
Если DOM идентична на обеих страницах, вы можете использовать индекс элемента в DOM:
$("button").click(function() {
var position = $(this).index("body *");
// Send "position" to the server
...
}
На странице приема вы можете найти соответствующую кнопку с:
$("body *").eq(position);
Правильный способ сделать делегацию мероприятия, о которой вы спрашивали, это:
$(document).on("mouseup mousedown click mousemove", "button,checkbox,option", function(e) {
var element = $(this).index("body *");
socket.emit("event", element, e);
});
Измените список типов элементов на все те, которые вам нужно, чтобы поймать клики.
.on()
в порядке для целевых элементов, которые могли не быть частью DOM во время выполнения привязки события. Но здесь может возникнуть проблема с всплывающими событиями, так как это может привести к появлению большего количества элементов, чем вы собираетесь. Если вы хотите обрабатывать только щелчок по исходному целевому элементу, но не по каждому из его предков, то вам следует предотвратить всплывание события.