Які властивості я можу використовувати з event.target?


91

Мені потрібно визначити елементи, з яких запускаються події.

Використання event.targetотримує відповідний елемент.

Які властивості я можу використовувати звідти?

  • href
  • ідентифікатор
  • nodeName

Я не можу знайти багато інформації на ньому, навіть на сторінках jQuery , тому сподіваюся, хтось може заповнити наведений вище список.

РЕДАГУВАТИ:

Це може бути корисно: властивості вузла selfHTML та властивості HTML HTML

Відповіді:


41

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
});

ах Дякую! Я розміщую посилання, які показують доступні властивості.
часті

2
"це" стосуватиметься "foo" або "event.target"? Якщо я слухаю scrollStart на документі, а scrollStart спрацьовує на елементі H1, як я можу взяти H1?
часті

@frequent - Відповідь Річардса нижче показує, що ви могли знайти H1, подивившись на event.target.tagName
Фрейзер Кіркман

141

Якби вам слід було перевірити за 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

21
Наскільки мені відомо, хром більше не друкує елементи DOM таким чином при використанні console.log. Натомість вам потрібно використовувати console.dir.
Astridax,

так, це не так вже й погано!

18
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()`

1
<attribute> Ім'я ... чому у світі ніхто інший, крім вас, не говорить цю просту відповідь?
karthikeayan

7

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

Я пробую з jQuery

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

Повернути помилку:

.attr не функціонує

Але _target.attributes.href.valueбула робота.


10
Це тому e.target, що не є об’єктом jQuery, а .attr()є методом jQuery. Якби ви спробували, __target.getAttribute('href');це могло б спрацювати.
kano

2

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


1

Найпростіший спосіб побачити всі властивості певного вузла DOM у Chrome (я на версії 69) - це клацнути правою кнопкою миші на елементі, вибрати перевірку, а потім замість перегляду вкладки "Стиль" клацнути на "Властивості" .

Усередині вкладки Властивості ви побачите всі властивості для вашого конкретного елемента.


варто згадати, що ця панель зараз застаріла на користь console.dir. На Chrome 85
ivanji

0
//Do it like---
function dragStart(this_,event) {
    var row=$(this_).attr('whatever');
    event.dataTransfer.setData("Text", row);
}

3
На це питання було дано відповіді, і за ці відповіді висловлено багато голосів. Яким чином ваша відповідь краща? Поясніть, будь ласка, своє рішення?
Якісний каталізатор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.