Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] HTML dinámico mediante jQuery

Estas en el tema de HTML dinámico mediante jQuery en el foro de Jquery en Foros del Web. Hola comunidad, Mediante la etiqueta SELECT de una página de marcado HTML 5, quiero agregar distintas hojas de estilos a la plantilla principal para que ...
  #1 (permalink)  
Antiguo 06/03/2015, 12:02
 
Fecha de Ingreso: abril-2008
Mensajes: 63
Antigüedad: 16 años, 7 meses
Puntos: 1
Pregunta HTML dinámico mediante jQuery

Hola comunidad,

Mediante la etiqueta SELECT de una página de marcado HTML 5, quiero agregar distintas hojas de estilos a la plantilla principal para que cambie según el tamaño de dispositivo. Tengo una para PC en alta definición, tablet, móvil y PC normal.

Código HTML:
Ver original
  1.     <meta charset="UTF-8">
  2.     <title>Hola</title>
  3.     <script type="text/javascript" src="js/jquery-1.11.2.min.js"></script>
  4.     <script type="text/javascript">
  5.             $(document).ready(inicio)
  6.             function inicio(){
  7.                 $("select").change(cambiacss);
  8.             }
  9.             function cambiacss(){
  10.                 var plantilla = $("select").attr("value");
  11.                 $("plantilla").html('<link rel=Stylesheet href="css/'+plantilla+'.css" type="text/css">')
  12.             }
  13.     </script>
  14.     <link rel="Stylesheet" href="css/base.css" type="text/css">
  15.     <plantilla>
  16.  
  17.     </plantilla>
  18. </head>

Con el código JavaScript siguiente pretendo agregar una línea en la etiqueta PLANTILLA, de esta manera se le agregarán más propiedades.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     $(document).ready(inicio)
  3.     function inicio(){
  4.         $("select").change(cambiacss);
  5.     }
  6.     function cambiacss(){
  7.         var plantilla = $("select").attr("value");
  8.         $("plantilla").html('<link rel=Stylesheet href="css/'+plantilla+'.css" type="text/css">')
  9.     }
  10. </script>

Pero no entiendo porque no funciona.
__________________
Álvaro Göede Rivera / Technical University in Electronic / Graphic Designer / Worship Leader
"no pondré delante de mis ojos cosa injusta" - Salmos 101
  #2 (permalink)  
Antiguo 06/03/2015, 16:32
Avatar de elporfirio  
Fecha de Ingreso: octubre-2013
Mensajes: 37
Antigüedad: 11 años
Puntos: 4
Respuesta: HTML dinámico mediante jQuery

No funciona por que supones que al colocar el link, la pagina vuelve a buscar todo lo que el DOM requiere, pero esto solo ocurre 1 vez.

utiliza algo como

Código Javascript:
Ver original
  1. $('link[href="css/'+plantillaoriginal+'.css"]').attr({'href' : 'css/'+plantillanueva+'.css});

plantilla original, es con la que inicia por default
plantilla nueva, es la que recien solicitas...

recuerda cambiar la variable var plantillaoriginal = plantillanueva, para el 2do cambio en adelante
__________________
visita http://elporfirio.com o habrá tabla ¬¬
  #3 (permalink)  
Antiguo 07/03/2015, 20:03
Avatar de Alexhg42  
Fecha de Ingreso: febrero-2015
Mensajes: 33
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: HTML dinámico mediante jQuery

pienso que seria mas conveniente el cambiar el className de tu body, en tu select pones que eligiedo la opcion cambie por ese el class de tu body y el css lo identifica y lo cambiaria todo en el momento sin tener que actualizar la pagina. con eso te ahorrarias tiempo de carga y gastaria menos recursos y menos espacio.
  #4 (permalink)  
Antiguo 09/03/2015, 22:51
 
Fecha de Ingreso: abril-2008
Mensajes: 63
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: HTML dinámico mediante jQuery

Gracias por la ayuda!
__________________
Álvaro Göede Rivera / Technical University in Electronic / Graphic Designer / Worship Leader
"no pondré delante de mis ojos cosa injusta" - Salmos 101

Etiquetas: css, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:37.