5

He estado trabajando en esto por un tiempo y parece que no puedo llegar a ninguna parte. Básicamente tengo la función autocompletar en un grupo de entradas por clase, pero necesito obtener las entradas específicas id para construir el objeto para publicar el ajax (tengo que usar POST para este proyecto no GET).jQuery autocompletar en la clase, cómo obtener la identificación

$(".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

Soy bastante nuevo para jQuery, pero, ¿Ha intentado utilizar attr ('id') en lugar de .prop ('id')? Por lo que yo sé, los identificadores son attr, no accesorios ... Además, como usas la sintaxis de puntos, $ (este) debería ser el camino a seguir, ya que estás apuntando al objeto jQuery. Espero que resuelva el problema. – rafaelbiten

Respuesta

10

Probar:

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

o:

this.element[0].id; 

interior de la source devolución de llamada, this refiere a la instancia del widget. Para obtener el elemento al que está asociado el widget, debe usar this.element, que es un objeto jQuery.

+0

Andrew, ¿tiene algo que ver con .get (0) que algunas personas usan? Si es así, esto es algo que realmente no puedo entender. ¿Por qué es necesario señalar el elemento así? = \ – rafaelbiten

+2

@ 7mo: ver mi actualización. 'this' dentro de la función autocompletar es la instancia del widget, por lo que' this.element' es el elemento al que se aplicó. 'element.get (0)' obtendrá el primer elemento de un objeto jQuery y es equivalente a 'element [0]' arriba. –

+0

Bueno, tiene mucho sentido en este escenario, pero a veces veo personas usando .get (0) que nunca imaginaría que debería usarse. Lamentablemente, no puedo pensar en un buen ejemplo ahora. Intentaré prestar mejor atención cuando vuelva a ver eso y ver si puedo entender por qué se ha utilizado. Gracias por tomarse el tiempo de explicármelo. Fue tu parte. – rafaelbiten

3

Lo probé en un proyecto mío. Esto funcionó para mí:

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

SÍ, eso funciona muy bien. –

1

yo estaba en una situación similar a la suya, user1572796 y esto es lo que funcionó para mí:

$(this).prop("id"); 
Cuestiones relacionadas