Foros del Web » Programando para Internet » Jquery »

Seleccionar / marcar elemento con JQUERY

Estas en el tema de Seleccionar / marcar elemento con JQUERY en el foro de Jquery en Foros del Web. Buenas compis, Tengo un problema a la hora de marcar y desmarcar elementos. Me explico. Parto de una lista de elementos @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: ...
  #1 (permalink)  
Antiguo 03/05/2010, 12:56
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Seleccionar / marcar elemento con JQUERY

Buenas compis,

Tengo un problema a la hora de marcar y desmarcar elementos. Me explico. Parto de una lista de elementos

Código HTML:
Ver original
  1. <ul class="lista">
  2.     <li>1</li>
  3.     <li>2</li>
  4.     <li>3</li>
  5.     <li>4</li>
  6.     <li>5</li>
  7.     <li>6</li>
  8. </ul>


Y lo que quiero es que el usuario pueda marcar y/o desmarcar los elementos a su antojo, esto me es util si puedo saber que elementos se marcaron finalmente, se puede saber?

El código que he conseguido crear solo marca, no encuentro la forma de desmarcar un elemento marcado!!

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/v1.98/DTD/v1.98-strict.dtd">
  2. <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head>
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  4. <title>Marcando elementos</title>
  5. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
  6. <script type="text/javascript">
  7. $(document).ready(function() {
  8.     $("li").click(function () {  
  9.       $(this).addClass('activo');
  10.     });
  11.     $("li.activo").click(function () {  
  12.       $(this).removeClass('activo');
  13.     });
  14. });
  15. <style type="text/css">
  16. .lista {
  17.     padding:10px;
  18.     margin:0px;
  19.     list-style:none;
  20.     width:50px;
  21. }
  22. .lista li {
  23.     display:block;
  24.     height:18px;
  25.     text-decoration:none;
  26.     color:#666666 !important;
  27.     padding:1px 5px 1px 5px;
  28.     border:1px solid #ffffff;
  29. }
  30. .lista li:hover {
  31.     border:1px solid #e53500;
  32.     text-decoration:none;
  33. }
  34.  
  35. li.activo{
  36.     background:red;
  37.     width:20px;
  38.     height:20px;
  39.     font-weight:bold;
  40.     color:#fff;
  41. }
  42. </head>
  43. <ul class="lista">
  44.     <li>1</li>
  45.     <li>2</li>
  46.     <li>3</li>
  47.     <li>4</li>
  48.     <li>5</li>
  49.     <li>6</li>
  50. </ul>
  51. </body>
  52. </html>

¿Cómo se haría para desmarcar un elemento que fue marcado?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 03/05/2010, 18:51
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Seleccionar / marcar elemento con JQUERY

No se por que no funciona tu codigo, pero siempre podes usar Selectable de jquery UI.
  #3 (permalink)  
Antiguo 03/05/2010, 19:22
Avatar de _Ju
_Ju
 
Fecha de Ingreso: noviembre-2008
Ubicación: Colima, MX
Mensajes: 192
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Seleccionar / marcar elemento con JQUERY

No se supone que debe de haber una clase llamada "activo" para que esto funcione???

Veo que tienes "li.activo" pero no la clase "activo" como tal
__________________
www.grupogalco.net

Twitter: @jugalvez
  #4 (permalink)  
Antiguo 03/05/2010, 19:45
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Seleccionar / marcar elemento con JQUERY

Cita:
li.activo{
background:red;
width:20px;
height:20px;
font-weight:bold;
color:#fff;
}
Creo que es cierto, que la clase tienen que estar separada del elemento en sí.
  #5 (permalink)  
Antiguo 03/05/2010, 23:41
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Seleccionar / marcar elemento con JQUERY

Cita:
Iniciado por _Ju Ver Mensaje
No se supone que debe de haber una clase llamada "activo" para que esto funcione???

Veo que tienes "li.activo" pero no la clase "activo" como tal
Lo probé separándolo pero tampoco consigo que desmarque un elemento ya marcado.

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/v1.98/DTD/v1.98-strict.dtd">
  2. <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head>
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  4. <title>Marcando elementos</title>
  5. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
  6. <script type="text/javascript">
  7. $(document).ready(function() {
  8.     $(".lista li").click(function () {  
  9.       $(this).addClass('activo');
  10.     });
  11.    
  12.      $(".lista li.activo").click(function () {  
  13.       $(this).removeClass('activo');
  14.     });
  15. });
  16. <style type="text/css">
  17. .lista {
  18.     padding:10px;
  19.     margin:0px;
  20.     list-style:none;
  21.     width:50px;
  22. }
  23. .lista li {
  24.     display:block;
  25.     height:18px;
  26.     text-decoration:none;
  27.     color:#666666 !important;
  28.     padding:1px 5px 1px 5px;
  29.     border:1px solid #ffffff;
  30. }
  31. .lista li:hover {
  32.     border:1px solid #e53500;
  33.     text-decoration:none;
  34. }
  35.  
  36. .activo{
  37.     background:red;
  38.     width:20px;
  39.     height:20px;
  40.     font-weight:bold;
  41.     color:#fff;
  42. }
  43. </head>
  44. <ul class="lista">
  45.     <li>1</li>
  46.     <li>2</li>
  47.     <li>3</li>
  48.     <li>4</li>
  49.     <li>5</li>
  50.     <li>6</li>
  51. </ul>
  52. </body>
  53. </html>

Raro no?
  #6 (permalink)  
Antiguo 04/05/2010, 04:26
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Seleccionar / marcar elemento con JQUERY

con toggleClass

Código Javascript:
Ver original
  1. $(function() {
  2.         $("li").click( function () {
  3.             $(this).toggleClass('activo');
  4.         });
  5.     });
  #7 (permalink)  
Antiguo 04/05/2010, 13:15
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Seleccionar / marcar elemento con JQUERY

Cita:
Iniciado por Dany_s Ver Mensaje
con toggleClass

Código Javascript:
Ver original
  1. $(function() {
  2.         $("li").click( function () {
  3.             $(this).toggleClass('activo');
  4.         });
  5.     });
Muchas gracias Dany_s, funcionó a la perfección.

¿Tengo alguna manera de saber que elementos están actualmente marcados?

Ya que la idea, es que según la lista que muestre se deban marcar 1 o más opciones, y llegado a ese limite, envíe ese resultado por ajax a un script el cual devolverá (con json) una nueva "lista de opciones" a seleccionar y así ir continuando.

Sabes como saber si se seleccionó al menos 1 elemento de la lista?

Muchas gracias de antemano!
  #8 (permalink)  
Antiguo 04/05/2010, 15:24
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Seleccionar / marcar elemento con JQUERY

$('.activo').length
  #9 (permalink)  
Antiguo 04/05/2010, 16:29
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Seleccionar / marcar elemento con JQUERY

Cita:
Iniciado por Dany_s Ver Mensaje
$('.activo').length
Gracias nuevamente :)

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $("li").click( function () {
  3.         $(this).toggleClass('activo');
  4.         var n = $('.activo').length;
  5.         $("span").text("Hay " + n + " elementos seleccionados");
  6.     });
  7. });

Etiquetas: seleccionar
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 10:46.