2011-08-25 8 views
5

Quindi ho il vecchio codice di qualcun altro che sto cercando di ripristinare. Non ho molta familiarità con jQuery, ma cosa specifica l'operatore @?jQuery @ operator?

Il codice è:

v_button_format = $('#' + v_form_id).find('input[@name=button_format]').val(); 
v_content_type = $('#' + v_form_id).find('input[@name=content_type]').val(); 

Sto usando jQuery 1.3 e sta lanciando una "eccezione non rilevata: Errore di sintassi, l'espressione non riconosciuto: [@ name = button_format]" errore. C'è un problema di compatibilità?

risposta

13

Questo è un selettore di attributo.

Il @ è un XPath-ism che non è più utilizzato in jQuery.
Inoltre, le versioni più recenti di jQuery richiedono che il valore dell'attributo sia tra virgolette.

Pertanto, si dovrebbe scrivere

$('#' + v_form_id).find('input[name="content_type"]').val(); 
+0

è l'operatore @ compatibile con l'attuale jQuery? – powtac

+1

@powtac: non credo. – SLaks

+0

Poco fuori tema, ma per una cosa del genere non è meglio usare 'document.getElementsByName'? –

3

Ciò significa attribute. input[@name=button_format] significa the input tag with the name attribute equal to button_format.

È necessario rimuovere @ e virgolette pulsante_format nelle versioni recenti jQuery, tuttavia. Ciò significa che @ non è retrocompatibile. So quoth the docs.

Nota: In jQuery 1.3 [@attr] selettori di stile sono stati rimossi (erano in precedenza deprecati in jQuery 1.2). Basta rimuovere il simbolo "@" dai selettori per farli funzionare di nuovo.

+0

Grazie per la nota su '@'! – powtac

0
input[@name=button_format] 

significa che il campo di input con il nome-attributo impostato 'button_format', vale a dire:

<input name="button_format"> 
0
input[@name=button_format] 

Questo è vecchio selettore type.please rimuovere se @ se utilizzando jQuery ultimo nuovo modo è

input[name="button_format"] 
0

Nota: in jQuery 1.3 [@attr] i selettori di stile sono stati rimossi (erano precedentemente deprecati in jQuery 1.2). Basta rimuovere il simbolo '@' dai selettori per farli funzionare di nuovo.

è un selettore deprecato, è necessario rimuoverlo dal codice in quanto non è più supportato e causerà errori.

0

Questo è il vecchio modo di farlo.

È lo stesso (e dovrebbe essere cambiato a):

$('input[name="button_format"]') 

notare anche le citazioni obbligatorie

0

Abilità come altri hanno menzionato.

I miei 2 centesimi: La notazione è ispirato dal XPath, che denota anche (XML) gli attributi utilizzando un @