2009-04-13 15 views
6

ho bisogno di reask mia vecchia domanda, probabilmente dovreste avere chiesto che al 01:00: Pattributi non trovata da selettore di attributo jQuery

Sembra che alcuni attributi non sono stati trovati usando selettore di attributo di jQuery:

$("*[some=value]"); 

Finora sembra che non possa usare l'attributo action di form e l'attributo src di img. C'è una lista di attributi che non funzionano, quindi posso scrivere selettori personalizzati per loro?

Grazie ancora!


Edit: Nessuno sembra credere che alcuni selettori non funzionano come previsto. Guarda questo esempio: On this site (che ha jQuery 1.3 su di esso per firebugging) c'è una forma che assomiglia a questo:

<form style="display: inline;" method="get" action="list"> 

(discesa sue attorno alla 'ricerca corrente download'). Se apri firebug e prova questo selettore:

$("form[action=list]"); 

NON sarà possibile selezionare il modulo. Non c'è nulla di speciale nell'attributo action. Lo stesso vale per lo src dell'immagine logo su quella pagina:

<img alt="Logo" src="/p/aost/logo?logo_id=1238551994"/> 

Il selettore che non funziona è:

$("img[src=/p/aost/logo?logo_id=1238551994"); 

Certo, posso fare jolly corrisponde, non è questo che io sono dopo .

+1

Si prega di * non * reask le vostre domande. Modifica semplicemente quello vecchio. Questo lo colpirà, se davvero ti senti utile. –

+1

Non lo sapevo - non lo faccio in futuro – mkoryak

+1

Va bene, non ti preoccupare. Potresti voler modificare la vecchia domanda per collegarla a questa domanda se questa domanda ti ha dato una soluzione, quindi chiedi alle persone di votare per chiudere la vecchia. –

risposta

11

Non esiste una "lista" di attributi non supportati perché non dovrebbe esserci; questo è un bug in jQuery.

Ecco i biglietti aperti su questo:

A quanto pare il denominatore comune tra gli insetti è che jQuery è confrontare la stringa di selezione specificata contro l'URL completo rispetto all'attuale azione/attributo src così come è definito nell'HTML. Questo spiega perché i selettori attributeEndsWith o attributeContains funzionano in questo caso.

Suggerirei semplicemente di dare al modulo/immagine una classe/ID e farla finita con.

+0

Grazie, questa è l'informazione che stavo cercando – mkoryak

4

Tutto dipende da quale versione di jQuery si sta utilizzando.

Prima 1.3, è possibile utilizzare la notazione @:

$("*[@name=value]") 

Così forse aggiungendo @ aiuta.

Oltre a ciò, è necessario immettere il valore dell'attributo esattamente come come definito nel markup - ad es. se si sta cercando di trovare un'immagine con src="http://example.com/dog.jpg", non farlo perché non funziona:

$("img[src=dog.jpg") 

in quanto cercherà di trovare le immagini con src uguale a "dog.jpg" , non contenendolo.

Se si desidera cercare attributi che definiscono solo parti di esso, suggerirei di leggere la pagina jQuery API Selectors. Ad esempio, per ottenere tutte le immagini briciolo src contenente "dog.jpg", è possibile utilizzare:

$("img[src*=dog.jpg]") 

Allo stesso modo, è possibile trovare gli elementi i cui attributi iniziare o terminare con valori specifici/stringhe.

+0

Ho aggiornato il mio jquery e ora il selettore di attributo (il secondo esempio) non funziona più. qualche idea? – Scott