2013-05-22 14 views
5

Ho un array jQuery di <span> s e mi piacerebbe ottenere solo uno di essi come un oggetto jQuery in modo che sia possibile stringere metodi aggiuntivi su di esso. Qualcosa come $mySpans[2] (che restituisce una stringa) o $mySpans.get(2) (che restituisce direttamente l'elemento DOM).Restituisce l'oggetto jQuery (invece del DOM) dall'array jQuery utilizzando l'indice

So che questo lavoro:

$($mySpans[2]).someJQueryMethod(...); 

... ma sembra un po 'ridondante. Qual è il modo giusto per farlo?

risposta

9

Ti piace questa:

$myspans.eq(2).method(); 
+0

Perché questo metodo si chiama 'eq'? Sembra un nome terribile. So che anche 'index' esiste, ma che dovrebbe probabilmente essere 'indexOf' o qualcosa di – voithos

+1

' eq' o "uguale". 'index' fa qualcosa di completamente diverso. Puoi ancora usare 'slice' come un normale array se questo ha più senso. – elclanrs

+0

In che modo '$ myspans 'è uguale a" 2 ", ha senso? Capisco che 'index/indexOf' è usato tradizionalmente per cercare una collezione e restituire l'indice di un oggetto, ma anche se' index' non fosse usato, penso che si possa trovare un nome migliore. – voithos

5

jsFiddle Demo

si sta andando a voler utilizzare eq. Nota che restituirà l'elemento jQuery object wrapped a quell'indice, quindi se hai una sola corrispondenza dovresti usare 0 (che segue che 2 restituirà il terzo del set).

var $thirdMatch = $mySpans.eq(2);//== jQuery object with third match 
var htmlElement = $thirdMatch[0];//== actual dom element 
var matchedHtml = $thirdMatch.html();// call some jQuery API method 

È pratica comune per memorizzare oggetti jQuery utilizzare un $variableName per scopi di leggibilità.

+0

Questo è quello che stavo cercando. Grazie. – brentonstrine

Problemi correlati