Actualmente estoy luchando con menús desplegables y me gustaría compartir mis experiencias:
Hay situaciones específicas donde <select>
que no se pueden usar y deben 'emularse' con el menú desplegable.
Por ejemplo, si desea crear grupos de entrada de bootstrap, como botones con menús desplegables (consulte http://getbootstrap.com/components/#input-groups-buttons-dropdowns ). Lamentablemente <select>
no es compatible con los grupos de entrada, no se representará correctamente.
¿O alguien ya ha resuelto esto? Estaría muy interesado en la solución.
Y para hacerlo aún más complicado, no puede usarlo simplemente $(this).text()
para capturar lo que el usuario seleccionó en el menú desplegable si está usando glypicons o iconos de fuentes increíbles como contenido para el menú desplegable. Por ejemplo:
<li id="someId"><a href="#0"><i class="fa fa-minus"></i></a></li>
porque en este caso no hay texto y si va a agregar algo, también se mostrará en el elemento desplegable y esto no es deseado.
Encontré dos posibles soluciones:
1) Use $(this).html()
para obtener contenido del <li>
elemento seleccionado y luego para examinarlo, pero obtendrá algo así, <a href="#0"><i class="fa fa-minus"></i></a>
por lo que debe jugar con esto para extraer lo que necesita.
2) Uso $(this).text()
y ocultar el texto en el elemento de lapso oculta:
<li id="someId"><a href="#0"><i class="fa fa-minus"><span class="hidden">text</span></i></a></li>
. Para mí, esta es una solución simple y elegante, puede poner cualquier texto que necesite, el texto estará oculto y no necesita hacer ninguna transformación del $(this).html()
resultado como en la opción 1) para obtener lo que necesita.
Espero que esté claro y pueda ayudar a alguien :-)