2016-08-29 4 views
7

I spezifische Attribute von Ereignisziel bei click Ereignis überprüfen möchten:Mit jQuery Methoden auf event.target

$('div').on('click', function(e) { 
    console.log(e.target.attr('class')); 
}); 

Dies führt zu Fehler in Browser-Konsole:

main.js:47 Uncaught TypeError: e.target.attr is not a function

Ist das nicht event.target ein jQuery-Objekt auch?

+2

auch console.log ($ (this) .attr ('class')); –

+3

@KapitulaAlexey Nein, 'event.target' kann anders sein als' this' –

Antwort

6

e.target ist kein jQuery-Objekt, es ist ein DOM-Element. Sie haben es zu werfen:

console.log($(e.target).attr('class')); 

Arbeitsbeispiel:

$('div').on('click', function(e) { 
 
    console.log($(e.target).attr('class')); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test">click me</div>

0

Es ist besser, nicht mit JavaScript und jQuery-Code zu mischen, weil sie schwer zu handhaben oder zu verstehen ist.

$('div').on('click', function(e) { 
    //console.log(e.target.className); javascript 
    console.log($(this).attr('class')); //jquery 
}); 
+3

event.target ist nicht gleich $ (this) –

+2

jQuery _is_ Javascript-Code. –

+0

Ja jQuery ist es viel einfacher, JavaScript zu verwenden, also warum wir JS-Code wieder verwendet haben, ohne –

Verwandte Themen