2012-06-14 4 views
54

è comunque necessario per ottenere la classe quando viene attivato l'evento click. Il mio codice come sotto, funziona solo per l'ID ma non per la classe.Ottenere la classe dell'elemento che ha generato un evento utilizzando JQuery

html:

<html> 
<body>  
<a href="#" id="kana1" class="konbo">click me 1</a> 
<a href="#" id="kana2" class="kinta">click me 2</a> 
</body> 
</html> 

JQuery:

$(document).ready(function() { 
    $("a").click(function(event) { 
     alert(event.target.id+" and "+event.target.class); 
    }); 
}); 

codice jsfiddle here

+11

Classe è un'opera riservata in ECMAScript, quindi l'attributo di classe è mappato alla proprietà DOM 'className'. Usa 'event.target.className'. – RobG

risposta

103

Prova:

$(document).ready(function() { 
    $("a").click(function(event) { 
     alert(event.target.id+" and "+$(event.target).attr('class')); 
    }); 
}); 
71

Questo conterrà la classe completo (che può essere mult classi separate da spazio, se l'elemento ha più di una classe). Nel codice conterrà sia "konbo" o "kinta":

event.target.className 

È possibile utilizzare jQuery per verificare la presenza di classi per nome:

$(event.target).hasClass('konbo'); 

e per aggiungere o rimuovere con addClass e removeClass .

+5

+1 per '.className'. –

1

Se si utilizza jQuery 1.7:

alert($(this).prop("class")); 

o:

alert($(event.target).prop("class")); 
1
<html> 
    <head> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
    </head> 
<body>  
<a href="#" id="kana1" class="konbo">click me 1</a> 
<a href="#" id="kana2" class="kinta">click me 2</a> 

<script> 
    $(document).ready(function() { 
    $("a").click(function(event) { 
     var myClass = $(this).attr("class"); 
     var myId = $(this).attr('id'); 
     alert(myClass + " " + myId); 
    }); 
}) 
</script>> 
</body> 
</html> 

questo funziona per me. Non esiste una funzione event.target.class in jQuery.

+0

per qualche motivo devo usare l'evento, comunque grazie per la risposta. il broesch ha risposto a ciò di cui ho bisogno. – Redbox

0

attento come target potrebbe non funzionare con tutti i browser, funziona bene con Chrome, ma mi sa Firefox (o IE/Bordo, non ricordo) è un po 'diverso e usa srcElement. Faccio di solito qualcosa di simile

var t = ev.srcElement || ev.target; 

determinando in tal modo

$(document).ready(function() { 
    $("a").click(function(ev) { 
     // get target depending on what API's in use 
     var t = ev.srcElement || ev.target; 

     alert(t.id+" and "+$(t).attr('class')); 
    }); 
}); 

Thx per le belle risposte!

Problemi correlati