<input  id="1" class="Find">
<input  id="2" class="Find">
<input  id="3" class="Find">

$('.Find').autocomplete('auto/data.php?mode='+ $('.Find').attr('id')  +'', {    
                    width: 220,
                    max: 5,
                    selectFirst: false,      
                    mustMatch:true,
                    formatItem: function(data, i, n, value) {return  value.split("|")[0];}
                    });

En este caso, el código $('.Find').attr('id') solo muestra la primera matriz. No muestra la identificación específica donde la necesitaba.

He hecho para cambiar con la nueva var n cambiar esta línea $('.Find').attr('id') con una nueva variable pero el resultado es undefined.

La nueva var se ve así var one = $("#GetObjc").attr("value");

Alguien puede ayudarme. ¿Qué debo hacer para obtener la identificación específica en esa clase? Perdón si me confundo, cozz soy novato.

3
user3502930 29 ago. 2014 a las 15:33

6 respuestas

La mejor respuesta

No estoy seguro de lo que estás buscando. pero puede obtener todos los id s utilizando .each.

var ids ='';
$(".Find").each(function( index, value ) {
  ids += $(this).attr('id') + ',';
});

Luego puede dividir ids variable o algo así.

Verificar demostración de JSFiddle

En su caso, creo que es útil para usted:

$('.Find').each(function() {
    var $this = $(this);
    $this.autocomplete('auto/data.php?mode='+ $this.attr('id')  + '', {    
        width: 220,
        mzx: 5,
        selectFirst: false,      
        mustMatch:true,
        formatItem: function(data, i, n, value) {return  value.split("|")[0];}
    });
});
1
Moshtaf 29 ago. 2014 a las 11:39

No estoy seguro de si obtengo lo que desea, pero supongo que desea completar automáticamente todas las entradas con datos de diferentes URL en función de la entrada, si es así, puede hacer esto:

$('.Find').each(function(){
  $(this).autocomplete('auto/data.php?mode='+ $(this).attr('id')  +'', {    
                width: 220,
                max: 5,
                selectFirst: false,      
                mustMatch:true,
                formatItem: function(data, i, n, value) {return  value.split("|")[0];}
  });
})

Para obtener la identificación, en cada uno solo haga:

$(this).attr('id') or $(this).prop('id')
1
Vfleitao 29 ago. 2014 a las 11:44

2% de posibilidades de que haya entendido su pregunta de la manera correcta, pero parece que necesita iterar a través de su lista de elementos:

    $('.Find').each(function() {
        $(this).autocomplete('auto/data.php?mode='+ $(this).attr('id')  +'', {
            width: 220,
            max: 5,
            selectFirst: false,      
            mustMatch:true,
            formatItem: function(data, i, n, value) {return  value.split("|")[0];}
        });
    });
1
Romain 29 ago. 2014 a las 11:40

$('.Find') devuelve una matriz de todos los elementos DOM (envueltos en jquery) que obtuvieron una clase 'Buscar'.

Puede acceder a cada elemento con el operador [], como $('.Find')[0], o iterar a través de la matriz con for lop. Para obtener la identificación del elemento, use la propiedad id.

Para resumir - $('.Find')[0].id - id del primer elemento

1
leonprou 29 ago. 2014 a las 11:44

Para tener una fuente de datos dinámica, debe establecer un function() como su fuente.

Además, el atributo this no devuelve el elemento DOM real , en lugar de un objeto más rico que (por supuesto) contiene el elemento real.

Entonces, para lograr lo que quieres, puedes probar lo siguiente:

$('.Find').autocomplete({    
    source: function(request, response) {
        var id = this.element[0].id;
        var url = 'auto/data.php?mode='+ id;
        jQuery.getJSON(url, response).error(function () { /* handle JSON error */ }); 
    },
    width: 220,
    max: 5,
    selectFirst: false,      
    mustMatch:true,
    formatItem: function(data, i, n, value) {return  value.split("|")[0];}
});
1
Tasos K. 29 ago. 2014 a las 11:44

Creo que quieres hacer esto:

$('.Find').each(function() {
    var $this = $(this);
    $this.autocomplete('auto/data.php?mode='+ $this.attr('id')  + '', {    
        width: 220,
        mzx: 5,
        selectFirst: false,      
        mustMatch:true,
        formatItem: function(data, i, n, value) {return  value.split("|")[0];}
    });
});

$('.Find').attr('id') siempre devolverá la identificación del primer .Find en la página. Entonces no puedes usarlo así.

1
Magus 29 ago. 2014 a las 11:40