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

109
Visualizações
Cambiar el estilo de un solo elemento en un bucle

Esto podría confundir, pero es una pregunta seria.

Estoy obteniendo filas de tablas de un bucle usando php y estoy mostrando esas tablas dentro de una etiqueta de tabla usando ajax.

Aquí para cada fila hay una identificación llamada productTableRow .

Entonces, lo que quiero hacer es, en esta tabla, cuando hago clic en una fila específica, quiero cambiar el color de fondo de la fila en la que se hizo clic. Solo esa fila y tomar el valor del atributo de la fila en la que se hizo clic llamado ID de producto y mostrarlo en otro entrada oculta

 $(document).on('click', function(e){ if($(e.target).is('#productTableRow')){ var productId = $(e.target).attr('productId'); if(productId == productId){ $(e.target).css('background-color','#128C7E'); } else { $('.trProductTable').css('background-color', 'transparent'); } }

});

Este es mi código php que genera las filas de la tabla,

 foreach ($products as $product) { $responseData .= "<tr id='productTableRow' productId='" . $product->id . "'>"; $responseData .= "<td>" . $product->id . "</td>"; $responseData .= "<td>" . $product->product_name . "</td>"; $responseData .= "<td>" . $product->product_barcode . "</td>"; if ($product->group_id == 0) { $responseData .= "<td>None</td>"; } else { $responseData .= "<td>" . $product->group_name . "</td>"; } $responseData .= "<td>" . $product->product_cost . "</td>"; $responseData .= "<td>" . $product->product_selling . "</td>"; if ($product->product_type == 0) { $responseData .= "<td>Liquid</td>"; } else if ($product->product_type == 1) { $responseData .= "<td>Weight</td>"; } else if ($product->product_type == 2) { $responseData .= "<td>Quantity</td>"; } $responseData .= "<td>" . $product->created_at . "</td>";

Intenté este código pero no funciona, realmente aprecio su ayuda.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Después de cambiar la identificación a una clase, intentaría esto

 $('tr.productTableRow').click(function(){ var productId = $(this).attr('productId'); if(productId === productId){ // Always true $(this).css('background-color','#128C7E'); } else { // Do something when false ??? } });

Nota de edición: este código debe ejecutarse después de agregar la tabla al html, si necesita ejecutarlo antes, coloque el código dentro de $(document).ready(function(){/*code */ });

Editar: respuesta basada en los comentarios.

 $(document).on('click', '.productTableRow', function(){ if(oldObject) { $(oldObject).css('background-color', 'transparent'); } var productId = $(this).attr('productId'); if(productId === productId){ // Always true $(this).css('background-color','#128C7E'); } oldObject = this; });
over 4 years ago · Santiago Trujillo Relatório

0

En primer lugar, la identificación debe ser específica de un elemento. Jquery está configurado así. Luego puede usar $(this).parent('tr') Para obtener la fila principal en el evento de clic que puede ser para toda la clase.

over 4 years ago · Santiago Trujillo Relatório

0

llegué a mi propia respuesta,

 $(document).on('click', '.groups-product-sidebar', (e)=>{ //Getting the clicked group attributes var groupId = $(e.target).attr('groupId'); $('.groups-product-sidebar').parent().css('background-color','transparent'); $(e.target).parent().css('background-color','#128C7E'); });
over 4 years ago · Santiago Trujillo 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