5

Ci sto lavorando da un po 'e non riesco ad arrivare da nessuna parte. Fondamentalmente ho il completamento automatico su un gruppo di input per classe, ma ho bisogno di ottenere l'input specifico id per costruire l'oggetto per pubblicare l'Ajax (devo usare POST per questo progetto non GET).jQuery completamento automatico sulla classe, come ottenere l'ID

$(".input_autocomplete").autocomplete({ 
    source: function(request, response) { 
    // here is where I get the hash from local storage, 
    // reference the id and build the object 
    // tried this.id, $(this).prop('id'), no luck 
    $.ajax({ 
    url: '/somepath/filename.htm', 
    contentType: 'application/json', 
    dataType: 'json', 
    type: 'POST', 
    data: JSON.stringify(obj), 
    success: function(json) { 
     return { 
     label: item.label, 
     value: item.label 
     } 
    }, 
    error: function() { 
     // error handling 
    } 
    }); // ajax 
} // source 
}); 
+0

Sono abbastanza nuovo per jQuery, ma, avete provato usando attr ('id') invece di .prop ('id')? Per quanto ne so, gli id ​​sono attr, non oggetti di scena ... Inoltre, dal momento che stai usando la sintassi del punto, $ (this) dovrebbe essere la strada da percorrere dal momento che stai mirando all'oggetto jQuery. Spero che risolva il problema. – rafaelbiten

risposta

10

Prova:

$(this.element).prop("id"); 

o:

this.element[0].id; 

All'interno del source richiamata, this si riferisce all'istanza del widget. Per ottenere l'elemento a cui è collegato il widget, è necessario utilizzare this.element, che è un oggetto jQuery.

+0

Andrew, ha qualcosa a che fare con il .get (0) che alcune persone usano? Se sì, questo è qualcosa che non riesco davvero a capire. Perché è necessario indicare l'elemento in questo modo? = \ – rafaelbiten

+2

@ 7th: Si prega di consultare il mio aggiornamento. 'this' all'interno del completamento automatico è l'istanza del widget, quindi' this.element' è l'elemento a cui è stato applicato. 'element.get (0)' otterrà il primo elemento di un oggetto jQuery ed è equivalente a 'elemento [0]' sopra. –

+0

Beh, ha molto senso in questo scenario, ma a volte vedo persone che usano .get (0) che non avrei mai immaginato di dover usare. Purtroppo non riesco a pensare ad un buon esempio ora. Proverò a prestare maggiore attenzione quando lo rivedrò e vedrò se riesco a capire perché è stato usato. Grazie per aver trovato il tempo di spiegarmelo. E 'stato gentile da parte tua. – rafaelbiten

3

L'ho provato in un mio progetto. Questo ha funzionato per me:

$(this.element.get(0)).attr('id'); 
+0

Sì, è un ottimo lavoro. –

1

ero in una situazione simile a te, user1572796 e questo è ciò che ha funzionato per me:

$(this).prop("id"); 
Problemi correlati