Atualmente, estou lutando com listas suspensas e gostaria de compartilhar minhas experiências:
Existem situações específicas em que <select>
não podem ser usadas e devem ser 'emuladas' com o menu suspenso.
Por exemplo, se você deseja criar grupos de entrada de inicialização, como Botões com menus suspensos (consulte http://getbootstrap.com/components/#input-groups-buttons-dropdowns ). Infelizmente <select>
não é suportado em grupos de entrada, não será renderizado corretamente.
Ou alguém já resolveu isso? Eu ficaria muito interessado na solução.
E para torná-lo ainda mais complicado, você não pode usar tão simplesmente $(this).text()
para capturar o usuário selecionado no menu suspenso se estiver usando glypicons ou ícones impressionantes de fontes como conteúdo para o menu suspenso. Por exemplo:
<li id="someId"><a href="#0"><i class="fa fa-minus"></i></a></li>
como neste caso não há texto e, se você adicionar algum texto, ele também será exibido no elemento suspenso e isso é indesejável.
Encontrei duas soluções possíveis:
1) Use $(this).html()
para obter o conteúdo do <li>
elemento selecionado e, em seguida, examiná-lo, mas você terá algo parecido <a href="#0"><i class="fa fa-minus"></i></a>
com o que precisa, para jogar com ele para extrair o que precisa.
2) Use $(this).text()
e ocultar o texto no elemento no espaço oculto:
<li id="someId"><a href="#0"><i class="fa fa-minus"><span class="hidden">text</span></i></a></li>
. Para mim, esta é uma solução simples e elegante, você pode colocar qualquer texto que precisar, o texto ficará oculto e não precisará fazer nenhuma transformação de $(this).html()
resultado, como na opção 1) para obter o que precisa.
Espero que esteja claro e possa ajudar alguém :-)