Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

267
Visualizações
Cómo obtener el valor de un atributo data-* de una selección creada dinámicamente en una tabla cuando cambio una opción

Quiero obtener el valor de un atributo data-* de una selección creada dinámicamente en una tabla cuando cambio una opción. Recibo un "Error de referencia no detectado: el índice no está definido".

El HTML de creación es:

 html += "<td style='width : 1%; white-space: nowrap;'><select name='parRating'>" for (let i = 0; i <= paraArray; i++) { html += "<option name='parRatingOption' data-index='" + i + "' value='" + parIdArray[i] + "'>" + parRatingArray[i] + "</option>" }; html += "</select></td>";

La captura de cambio de opción es:

 $('#showPatientPARForm').on( 'change', 'select[name="parRating"]', function (e) { e.preventDefault(); alert("this.value: " + this.value);//works alert("this.data-index: " + this.data-index);//Uncaught ReferenceError: index is not defined });

También he probado:

alert("this.attr('data-index'): " + $(this).attr("data-index")); //indefinido

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debe asegurarse de orientar el data-attribute correctamente, el valor de la opción se devuelve desde el selector principal ( select ), pero se debe acceder a la opción en sí de manera diferente. Utilice el conjunto de dataset para orientar los atributos de los datos.

 let paraArray = ['one','two','three']; let parIdArray = ['idOne','idTwo','idThree']; let parRatingArray = [1,2,3]; let html = ''; html += "<td><select name='parRating'>"; for (let i = 0; i < paraArray.length; i++) { html += "<option name='parRatingOption' data-index='" + i + "' value='" + parIdArray[i] + "'>" + parRatingArray[i] + "</option>"; } html += "</select></td>"; $('#showPatientPARForm table').append(html); $('#showPatientPARForm').on( 'change', 'select[name="parRating"]', function (e) { e.preventDefault(); alert("this.value: " + this.value);//works // select the data attribute correctly: //alert(this.options[this.options.selectedIndex].dataset.index); alert(this.options.selectedIndex) });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="showPatientPARForm"> <table></table> </div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda