1) De uma forma geral, qualquer select, quando clicado, caso dê para abir suas options na vertical e para baixo, beleza, é a prioridade. No entando, quando é o caso em que o select está no fim da página, nesse cado, as options abrem para o alto aparecendo acima dos elementos html que estão em cima dela. O que eu preciso fazer é exatamente esse comportamento quando abrir a ul que está substituindo o select. Como fazer?
2) Se notarem bem no select, perceberam que quando abre o overflow scroll dele, dá para notar que existe um buraco entre o final da li e o inicio do scroll e dá para ver os elementos sobrescritos que estão abaixo por essa brecha. Como corrigir isso?
3) Quando abro a ul, aparece o scrool. Note que a ul abre como efeito de slideDown(), slideUp(). Será que existe uma forma de adicionar esse plugin também ao scroll?
4) O scrool, não aparece quando fecho a ul. Está certo, pois coloquei overflow: hidden. Mas Gostaria de fazer da mesma forma que a ul se retrai com efeito, o scroll também se retraisse da mesma forma. Será que trem jeito?
$(document).ready(function(e){// entrega o primeiro elemento da select option à div .selecionada
$(".selectOptions .selecionada").html($(".selectOptions select > option:first-child").html());/*popula as li's*/
$(".selectOptions select > option").each(function(){//Não exibe a primeira li pois esta já está sendo exibida na .selecionadaif($(this).is(':first-child')) $(".selectOptions ul").append("<li value='"+this.value+"' style='display:none;'>"+this.text+"</li>");else $(".selectOptions ul").append("<li style='display:block;' value='"+this.value+"'>"+this.text+"</li>");});function exibeSelectUl (){
$(".selectOptions ul > li").each(function(){if($.trim($(this).text())=== $.trim($(".selectOptions .selecionada").html()))
$(this).css("display","none","important");else
$(this).css("display","block","important");});
$(".selectOptions ul").css("display","block");}
contador=0;
$(".selectOptions .selecionada").click(function(e){
exibeSelectUl();
quantasLis = $(".selectOptions ul li").length;if(contador %2==0){
$(".selectOptions .selecionada").addClass("setaCima").removeClass("setaBaixo");
$(".selectOptions ul li").css("display","none").slideDown(400);if(quantasLis >4){
$(".selectOptions ul").css('height','175px');
$(".selectOptions ul").css("overflow-y","scroll");}else{
$(".selectOptions ul").css('height','auto');
$(".selectOptions ul").css("overflow-y","auto");}}else{
$(".selectOptions .selecionada").addClass("setaBaixo").removeClass("setaCima");
$(".selectOptions ul li").slideUp(400,function(){
$(".selectOptions ul").css("overflow-y","hidden");});}
contador++;
e.stopPropagation();});// ao clicar em qualquer coissa, fecha a ul caso ela esteja aberta
$(document).on('click',function(e){if(
$(".selectOptions ul").css("overflow-y")=="auto"||
$(".selectOptions ul").css("overflow-y")=="scroll"){
$(".selectOptions .selecionada").trigger("click");}});/*ai clicar na li, busca correspondência na select option e o checa (marca)*///$(".selectOptions .selectOption ul li:not(:eq(0))").on( 'click',function(evt){
$('.selectOptions ul li').on('click',function( evt ){/*Joga a li selecionada a label*/
$(".selectOptions .selecionada").html($(this).html());/*Joga a li selecionada ao topo da ul*/
$($(this).closest('ul')).prepend($(this));// Armazena nome do maos que quer selecionarvar li = $(this).attr("value");// Guarda em opcao o elemento que retornar do filtro que vai testar entre as// options possÃveisvar opcao = $('.selectOptions select option').filter(function(){// testa entre as options qual delas tem o mesmo conteúdo que o desejadoreturn $(this).attr('value')=== li;});
exibeSelectUl();// Redefine o atributo do elemento encontrado pra selecionado.
opcao.attr('selected',true);});});
Pergunta
Carlos Rocha
Bom, criei um plugin de uma ul que preenche suas li's com os options de algum select.
Tudo OK.
Mas de repente estou com 4 problemas para resolver e dependo da ajuda de vocês.
À principio, esse select pode ser visto em http://www.hotplateprensas.com.br/estilos/.
1) De uma forma geral, qualquer select, quando clicado, caso dê para abir suas options na vertical e para baixo, beleza, é a prioridade. No entando, quando é o caso em que o select está no fim da página, nesse cado, as options abrem para o alto aparecendo acima dos elementos html que estão em cima dela. O que eu preciso fazer é exatamente esse comportamento quando abrir a ul que está substituindo o select. Como fazer?
2) Se notarem bem no select, perceberam que quando abre o overflow scroll dele, dá para notar que existe um buraco entre o final da li e o inicio do scroll e dá para ver os elementos sobrescritos que estão abaixo por essa brecha. Como corrigir isso?
3) Quando abro a ul, aparece o scrool. Note que a ul abre como efeito de slideDown(), slideUp(). Será que existe uma forma de adicionar esse plugin também ao scroll?
4) O scrool, não aparece quando fecho a ul. Está certo, pois coloquei overflow: hidden. Mas Gostaria de fazer da mesma forma que a ul se retrai com efeito, o scroll também se retraisse da mesma forma. Será que trem jeito?
HTML
CSS
jQuery
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.