2013-02-06 17 views
10

Cercando di ottenere il testo di elemento di destinazione di un evento da una lista non ordinatautilizzare jQuery per ottenere il testo del target

<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 

con codice come questo

$('ul').click(function() { 
theEl=(event.target.text); 
}); 

Quando ho console accedo

event.target 

restituisce

<li>Item 1</li> 

e

event.target.text

restituisce undefined

Voglio solo 'Articolo 1'. So che ho fatto prima - deve essere in ritardo ... grazie per qualsiasi tipo di assistenza :) funzione di testo di

risposta

18

utilizzare jQuery:

$(event.target).text() 
7

Stai confondendo JS crudo e jQuery.

In jQuery, utilizza $(event.target).text()

Tuttavia, è molto più efficiente in JavaScript: event.target.firstChild.nodeValue

EDIT: Ecco un JSPerf come prova.

+0

Buono JSPerf - molto più veloce in JS! Marked Jeff's come risposta corretta b/c è stato il primo a rispondere, ma grazie per il dettaglio. –

2

Il motivo non è definito event.target.text è perché HTMLElement non ha quel metodo o proprietà definita. Tuttavia, jQuery ha text() che è quello che stavi cercando. Per accedere ai metodi o alle proprietà di jQuery, è necessario racchiudere l'HTMLElement corrente in un oggetto jquery. Questo viene fatto passandolo a jQuery, che quindi crea un oggetto funzione con esso, e il prototipo jQuery che espone l'API.

jQuery(element);//in general 
$(event.target).text();//for your situation 
0
event.target.textContent 

E 'javascript accesso troppo. Ti consiglio di eseguire la console javascript "Chrome" (o Firefox) con Ctrl+Shift+J. Scrivi nel tuo codice: console.log(event) e guarda fuori sulla console. Puoi guardare ogni attributo dell'oggetto.

Problemi correlati