¿Qué propiedades puedo usar con event.target?


90

Necesito identificar los elementos de los que se disparan los eventos.

El uso event.targetobtiene el elemento respectivo.

¿Qué propiedades puedo utilizar desde allí?

  • href
  • carné de identidad
  • nombre del nodo

No puedo encontrar mucha información sobre él, incluso en las páginas de jQuery , así que espero que alguien pueda completar la lista anterior.

EDITAR:

Estos pueden ser útiles: propiedades del nodo selfHTML y propiedades HTML de selfHTML

Respuestas:


41

event.targetdevuelve el elemento DOM, para que pueda recuperar cualquier propiedad / atributo que tenga un valor; por lo tanto, para responder a su pregunta de manera más específica, siempre podrá recuperar nodeName, y podrá recuperar hrefy id, siempre que el elemento tenga un hrefy iddefinido; de lo contrario undefinedserá devuelto.

Sin embargo, dentro de un controlador de eventos, puede usar this, que también está configurado para el elemento DOM; más fácil.

$('foo').bind('click', function () {
    // inside here, `this` will refer to the foo that was clicked
});

ah. ¡Gracias! Estoy poniendo enlaces, que muestran las propiedades disponibles.
frecuente el

2
¿"this" se referirá a "foo" o "event.target"? Si estoy escuchando scrollStart en el documento y scrollStart se activa en un elemento H1, ¿cómo puedo tomar H1?
frecuente el

@frequent - La respuesta de Richards a continuación muestra que puede encontrar H1 mirando event.target.tagName
Frazer Kirkman

140

Si inspeccionara event.targetcon las herramientas de desarrollo de firebug o chrome, vería un elemento span (por ejemplo, las siguientes propiedades), tendrá las propiedades que tenga cualquier elemento. Depende de cuál sea el elemento objetivo:

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
Hasta donde yo sé, Chrome ya no imprime elementos DOM de esta manera cuando se usa console.log. Tienes que usar console.dir en su lugar.
Astridax

sí, ¡no está tan mal!

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 
}  

ingrese la descripción de la imagen aquí

aprovechar el uso de propiedades de filtro


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> Nombre ... ¿por qué nadie más que tú da esta simple respuesta?
karthikeayan

7

event.targetdevuelve el nodo al que se dirigió la función. Esto significa que puede hacer lo que quiera con cualquier otro nodo como el que obtendríadocument.getElementById

Probé con jQuery

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

Devuelve un error:

.attr no funciona

Pero _target.attributes.href.valuefue obras.


10
Eso es porque e.targetno es un objeto jQuery y .attr()es el método de jQuery. Si lo probaras __target.getAttribute('href');, funcionaría bien.
kano

2

event.targetdevuelve el nodo al que se dirigió la función. Esto significa que puede hacer cualquier cosa que haría con cualquier otro nodo como el que obtendríadocument.getElementById


1

Una manera fácil de ver todas las propiedades en un nodo DOM en particular en Chrome (estoy en la versión 69) es hacer clic derecho en el elemento, seleccionar inspeccionar y luego, en lugar de ver la pestaña "Estilo", hacer clic en "Propiedades" .

Dentro de la pestaña Propiedades, verá todas las propiedades de su elemento en particular.


Vale la pena mencionar que este panel ahora está en desuso en favor de console.dir. En Chrome 85
ivanji

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

3
Esta pregunta ha sido respondida y muchos votos a favor son colocados para estas respuestas ¿De qué manera es mejor tu respuesta? ¿Podría explicar su solución?
Quality Catalyst
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.