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

105
Vistas
forma limpia de manejar los atributos css de los botones con jquery

Tengo algunos botones que hago visibles en el momento en que hago visible mi gráfico. También puse una línea a través del texto según el estado de visibilidad del conjunto de datos. ¿Hay alguna manera de pasar un argumento a jquery $() para que pueda manejar este logix en un bucle for ordenado?

 if (!this.drawnAlready) { //button subscription $('#ds0').css("visibility", "visible"); $('#ds0').click( function(){ chartTest.data.datasets[0].hidden = !chartTest.data.datasets[0].hidden; chartTest.update(); $('#ds0').css("text-decoration", chartTest.data.datasets[0].hidden ? "line-through" : "none"); }); $('#ds1').css("visibility", "visible"); $('#ds1').click( function(){ chartTest.data.datasets[1].hidden = !chartTest.data.datasets[1].hidden; chartTest.update(); $('#ds1').css("text-decoration", chartTest.data.datasets[1].hidden ? "line-through" : "none"); }); $('#ds2').css("visibility", "visible"); $('#ds2').click( function(){ chartTest.data.datasets[2].hidden = !chartTest.data.datasets[2].hidden; chartTest.update(); $('#ds1').css("text-decoration", chartTest.data.datasets[2].hidden ? "line-through" : "none"); }); $('#ds3').css("visibility", "visible"); $('#ds3').click( function(){ chartTest.data.datasets[3].hidden = !chartTest.data.datasets[3].hidden; chartTest.update(); $('#ds3').css("text-decoration", chartTest.data.datasets[3].hidden ? "line-through" : "none"); }); }

En el ejemplo muestro que lo hago para tres botones para mayor claridad del código, pero en mi código hay bastantes botones por lo que el código parece claramente mejorable :).

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

0

Dale a todos tus #ds0/#ds1/etc la misma class="ds" , también dales un data-datasetid="0" para reemplazar el #ds0, etc.

 <button class="ds" data-datasetid="0">toggle data set 0</button> <button class="ds" data-datasetid="1">toggle data set 1</button>

luego reemplace su código con:

 if (!this.drawnAlready) { $('.ds').css("visibility", "visible"); $('.ds').click(function() { var dataset = $(this).data("datasetid"); chartTest.data.datasets[dataset].hidden = !chartTest.data.datasets[dataset].hidden; chartTest.update(); $(this).css("text-decoration", chartTest.data.datasets[dataset].hidden ? "line-through" : "none"); }); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Estás repitiendo código. Entonces, simplemente escriba un método que haga la parte repetitiva de su código.

Por ejemplo:

 function doThings(i) { const elementId = '#ds'+i; $(elementId).css("visibility", "visible"); $(elementId).click( function(){ chartTest.data.datasets[i].hidden = !chartTest.data.datasets[i].hidden; chartTest.update(); $(elementId).css("text-decoration", chartTest.data.datasets[i].hidden ? "line-through" : "none"); }); }

Entonces solo necesita llamar a esta función varias veces. Por ejemplo:

 [1, 2, 3, 4, 5].forEach( i => doThings(i))
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