Какие свойства я могу использовать с event.target?

Мне нужно определить элементы, из которых запускаются события.

Использование event.target позволяет получить соответствующий элемент.

Какие свойства я могу использовать оттуда?

  • href
  • id
  • имя_узла

Я не могу найти много информации об этом, даже на страницах jQuery, так что вот в надежде, что кто-то сможет завершить приведенный выше список.

ИЗМЕНИТЬ:

Это может быть полезно: свойства узла selfHTML и HTML-свойства selfHTML


person frequent    schedule 11.10.2011    source источник


Ответы (7)


event.target возвращает элемент DOM, поэтому вы можете получить любое свойство/атрибут, у которого есть значение; поэтому, чтобы ответить на ваш вопрос более конкретно, вы всегда сможете получить nodeName, и вы можете получить href и id, при условии, что элемент имеет определенные href и id; в противном случае будет возвращено undefined.

Однако внутри обработчика событий вы можете использовать this, который также установлен для элемента DOM; намного легче.

$('foo').bind('click', function () {
    // inside here, `this` will refer to the foo that was clicked
});
person Matt    schedule 11.10.2011
comment
ах. Благодарность! Я размещаю ссылки, которые показывают доступные свойства. - person frequent; 11.10.2011
comment
это будет относиться к foo или event.target? Если я слушаю scrollStart в документе, а scrollStart запускается для элемента H1, как я могу захватить H1? - person frequent; 11.10.2011
comment
@frequent - ответ Ричардса ниже показывает, что вы можете найти H1, просмотрев event.target.tagName - person Frazer Kirkman; 29.10.2016

Если бы вы проверили event.target с помощью инструментов разработчика firebug или chrome, вы бы увидели, что для элемента span (например, следующие свойства) он будет иметь любые свойства, которые есть у любого элемента. Это зависит от целевого элемента:

event.target: HTMLSpanElement

attributes: NamedNodeMap
baseURI: "file:///C:/Test.html"
childElementCount: 0
childNodes: NodeList[1]
children: HTMLCollection[0]
classList: DOMTokenList
className: ""
clientHeight: 36
clientLeft: 1
clientTop: 1
clientWidth: 1443
contentEditable: "inherit"
dataset: DOMStringMap
dir: ""
draggable: false
firstChild: Text
firstElementChild: null
hidden: false
id: ""
innerHTML: "click"
innerText: "click"
isContentEditable: false
lang: ""
lastChild: Text
lastElementChild: null
localName: "span"
namespaceURI: "http://www.w3.org/1999/xhtml"
nextElementSibling: null
nextSibling: null
nodeName: "SPAN"
nodeType: 1
nodeValue: null
offsetHeight: 38
offsetLeft: 26
offsetParent: HTMLBodyElement
offsetTop: 62
offsetWidth: 1445
onabort: null
onbeforecopy: null
onbeforecut: null
onbeforepaste: null
onblur: null
onchange: null
onclick: null
oncontextmenu: null
oncopy: null
oncut: null
ondblclick: null
ondrag: null
ondragend: null
ondragenter: null
ondragleave: null
ondragover: null
ondragstart: null
ondrop: null
onerror: null
onfocus: null
oninput: null
oninvalid: null
onkeydown: null
onkeypress: null
onkeyup: null
onload: null
onmousedown: null
onmousemove: null
onmouseout: null
onmouseover: null
onmouseup: null
onmousewheel: null
onpaste: null
onreset: null
onscroll: null
onsearch: null
onselect: null
onselectstart: null
onsubmit: null
onwebkitfullscreenchange: null
outerHTML: "<span>click</span>"
outerText: "click"
ownerDocument: HTMLDocument
parentElement: HTMLElement
parentNode: HTMLElement
prefix: null
previousElementSibling: null
previousSibling: null
scrollHeight: 36
scrollLeft: 0
scrollTop: 0
scrollWidth: 1443
spellcheck: true
style: CSSStyleDeclaration
tabIndex: -1
tagName: "SPAN"
textContent: "click"
title: ""
webkitdropzone: ""
__proto__: HTMLSpanElement
person Richard    schedule 11.10.2011
comment
Насколько мне известно, хром больше не выводит элементы DOM таким образом при использовании console.log. Вместо этого вы должны использовать console.dir. - person Astridax; 04.11.2014
comment
да, это не так уж плохо! - person ; 09.10.2017

window.onclick = e => {
    console.dir(e.target);  // use this in chrome
    console.log(e.target);  // use this in firefox - click on tag name to view 
}  

введите описание изображения здесь

воспользоваться преимуществами использования свойств фильтра


e.target.tagName
e.target.className
e.target.style.height  // its not the value applied from the css style sheet, to get that values use `getComputedStyle()`
person bhv    schedule 04.07.2017
comment
‹атрибут›Имя... почему в мире никто, кроме вас, не говорит этот простой ответ? - person karthikeayan; 26.06.2018

event.target возвращает узел, на который нацелена функция. Это означает, что вы можете делать все, что захотите, с любым другим узлом, подобным тому, который вы получили от document.getElementById.

Я пробовал с jQuery

var _target = e.target;
console.log(_target.attr('href'));

Вернуть ошибку:

.attr не работает

Но _target.attributes.href.value работал.

person Trong Nguyen Duy    schedule 11.11.2015
comment
Это потому, что e.target не является объектом jQuery, а .attr() является методом jQuery. Если бы вы попробовали __target.getAttribute('href');, все бы сработало. - person kano; 27.10.2016

event.target возвращает узел, на который нацелена функция. Это означает, что вы можете делать все, что вы делаете с любым другим узлом, подобным тому, который вы получили бы от document.getElementById.

person Alex    schedule 11.10.2011

Простой способ просмотреть все свойства определенного узла DOM в Chrome (у меня версия 69) — щелкнуть правой кнопкой мыши элемент, выбрать «Проверить», а затем вместо просмотра вкладки «Стиль» нажать «Свойства». .

Внутри вкладки «Свойства» вы увидите все свойства вашего конкретного элемента.

person damdeez    schedule 02.10.2018
comment
стоит отметить, что эта панель теперь устарела в пользу console.dir. В Хроме 85 - person ivanji; 21.09.2020

person    schedule
comment
На этот вопрос был дан ответ, и за эти ответы поставлено много голосов. В каком смысле ваш ответ лучше? Не могли бы вы объяснить свое решение? - person Quality Catalyst; 08.10.2020