Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

74
Vistas
¿Cuál es la forma más elegante de realizar las mismas acciones en dos elementos diferentes en dos escenarios superpuestos?

Tengo dos elementos <p> , $elem1 y $elem2. Colectivamente, podemos llamarlos $elems. Quiero que cada uno de sus textos sea de color rojo en los siguientes escenarios:

$elem1 cuando el tamaño de la pantalla es inferior a 600 píxeles de ancho $elem2 tan pronto como se carga la página (es decir, debería volverse rojo instantáneamente y permanecer rojo)

Ahora, podría hacer algo como:

 $elem2.css('color', 'red'); if (screenSize < 600) { $elem1.css('color', 'red'); }

Lo cual es manejable, pero ¿y si en lugar de hacer que el texto de cada elemento fuera rojo, quisiera agregar 20 atributos, más algunos eventos de clic y una clase CSS? Ahora el código anterior se ha disparado hasta convertirse en un montón de código duplicado.

Mi pregunta es, ¿cómo puedo escribir elegantemente jQuery/Javascript que abarque los escenarios de $elem1 y $elem2 para que el código "agregar atributo/evento/agregarclase" solo se explique una vez?

Intenté deletrear todos los atributos/eventos/addClass agregados para cada escenario por separado, y eso funciona, pero sé que causará problemas de mantenimiento en el futuro cuando olvide reemplazar algo en uno y no en el otro.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede pasar un objeto a .attr() para pasar múltiples atributos y valores

https://api.jquery.com/attr/#attr-atributos

Usando esto, podrías tener claves compartidas

 const shared = { checked: "checked", "data-id": id } $elem2.attr(shared); $elem2.attr({ // elem2 specific }); if (screenSize < 600) { $elem1.attr(shared); $elem1.attr({ // elem1 specific }); }

Por lo que vale, dado que le preocupa la duplicación de código, el mantenimiento y la gestión del cambio de presentación, una biblioteca alternativa declarativa/basada en componentes como React podría resolver sus problemas.

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿No podría darle a cada elemento un nombre de clase y actualizar css de esa manera? Por ejemplo, digamos que asignamos a elem1 y elem2 una clase css llamada aCssClassToUpdate. Luego haz lo siguiente:

 const classesToUpdate = document.querySelectorAll('.aCssClassToUpdate'); classesToUpdate.forEach(classToUpdate => { classToUpdate.style.color = 'red'; });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda