Ordenar lista "li" com critério personalisado

893 views
Skip to first unread message

felipe.vitorri

unread,
Jul 20, 2010, 1:16:51 PM7/20/10
to jQuery (Brasil)
Olá pessoal, tenho uma lista e quero ordena-la, mas o critério tem que
ser personalisado.

http://jsbin.com/ugiva3

Preciso ordenar da seguinte forma:

aaa
ccc
bbb

Luiz Tiago Oliveira

unread,
Jul 20, 2010, 1:18:47 PM7/20/10
to jque...@googlegroups.com
E que critério é esse ?! =P

2010/7/20 felipe.vitorri <felipe....@gmail.com>

--
Grupo de jQuery Brasil.

USE O JSBIN.COM PARA CÓDIGOS.

Email: jque...@googlegroups.com
Biba:   jquery-br+...@googlegroups.com
Site:    http://groups.google.com/group/jquery-br?hl=pt-BR



--
Luiz Tiago Oliveira
Instrutor iMedia Brasil | Front-End Engineer | Gerente de Projetos
www.luiztiago.com | luiz...@luiztiago.com

Ruan Carlos

unread,
Jul 20, 2010, 1:20:00 PM7/20/10
to jque...@googlegroups.com
Cara, que coisa doida.
-----------------------------------------------------------------
Ruan Carlos
@ruanltbg
www.ruancarlos.com.br
Bacharel em Sistemas de Informação - Desenvolvedor web


::. Eris .::

unread,
Jul 20, 2010, 1:30:00 PM7/20/10
to jque...@googlegroups.com

O que ele quer é ordenar em ordem alfabética! Só não soube se explicar (rsrsr). Normal, sou igualzinho a ele kkkkkk.

Essa ordenação é de dados dinâmicos? Ou Estáticos?

 

Atenciosamente,

Erismar B. Vieira

Desenvolvedor Web

PHP - ASP - ASP.NET - C# - AS 2.0 - CSS 2.0 - ADOBE CS4 STUDIO - MYSQL - SQL - JS - JQuery

logoPlugWeb

cid:_1_07DF6FB807DF6BFC004B23C3832576F5Evite imprimir. Colabore com o Meio Ambiente.

__________ Informação do ESET NOD32 Antivirus, versão da vacina 5295 (20100720) __________

 

A mensagem foi verificada pelo ESET NOD32 Antivirus.

 

http://www.eset.com



__________ Informação do ESET NOD32 Antivirus, versão da vacina 5295 (20100720) __________

A mensagem foi verificada pelo ESET NOD32 Antivirus.

http://www.eset.com
image003.gif
image004.jpg

Felipe Podestá

unread,
Jul 20, 2010, 1:33:19 PM7/20/10
to jque...@googlegroups.com
Em order alfabética é fácil, o que não encontrei foi uma forma de ordenação personalisada, em ordem alfabetica ascendente seria [a,b,c]. Descendente seria [c,b,a], mas quero que ele fique [a,c,b].

Aí minha dúvida! :P

Washington Botelho

unread,
Jul 20, 2010, 1:30:37 PM7/20/10
to jque...@googlegroups.com
Aqui tem um plugin que faz exatamente isso: http://james.padolsey.com/javascript/sorting-elements-with-jquery/

--
@wbotelhos
Washington Botelho dos Santos {
   http://wbotelhos.com;
}

Felipe Podestá

unread,
Jul 20, 2010, 1:22:09 PM7/20/10
to jque...@googlegroups.com
Eu utilizei o tsort http://tinysort.sjeiti.com/ para ordenar, até aí tudo bem!

Mas não preciso ordenar asc ou desc, mas sim no padrão

  • aaa
  • ccc
  • bbb

Felipe Podestá

unread,
Jul 20, 2010, 1:51:10 PM7/20/10
to jque...@googlegroups.com
Esse plugin faz o mesmo que o tinysort. N�o � o que estou procurando.

> --
> Grupo de jQuery Brasil.
>

> USE O JSBIN.COM PARA C�DIGOS.

Flavia Missi

unread,
Jul 20, 2010, 1:50:37 PM7/20/10
to jque...@googlegroups.com
Cara, me diz se eu entendí direito:

vc tem os elementos aaa, bbb e ccc. em ordem alfabética é facil e vc já sabe, né, mas o que você quer é colocar o último elemento como o segundo? Você tem que achar qual vai ser o seu padrão de ordenação, pra depois agente te ajudar.

Vamos mudar seu exemplo, se você tiver 4 elementos ao invés de 3: aaa, bbb, ccc, ddd

A ordenação seria:
  • aaa
  • ddd
  • bbb
  • ccc
É isso que vc quer?

Ou no caso você manteria a anterior, resultando nisso:
  • aaa
  • ccc
  • bbb
  • ddd
É alguma dessas opções que você quer?

[]'s
Flàvia Missi

gustavo pereira

unread,
Jul 20, 2010, 1:54:11 PM7/20/10
to jque...@googlegroups.com
Felipe, o código que o Washington postou te serve sim, é só adaptar pra sua necessidade.

Abraços,

--------------------------------------------------------------------------------------------------------------------------
Gustavo Pereira
E-mail: gustavoper(a)gmail.com



2010/7/20 Flavia Missi <flavi...@gmail.com>

Luiz Tiago Oliveira

unread,
Jul 20, 2010, 1:55:11 PM7/20/10
to jque...@googlegroups.com
O mais complicado é o plugin adivinhar qual ordenação ele quer, se nem ele sabe! =P


2010/7/20 gustavo pereira <gusta...@gmail.com>

Felipe Podestá

unread,
Jul 20, 2010, 1:55:47 PM7/20/10
to jque...@googlegroups.com
É um padrão:

Tenho três estados Brasileiros, Acre, Bahia e Maranhão em uma lista "li".
Quero que fique no seguinte padrão:

População        Estado
xxxxxxxxxx        Bahia
xxxxxxxxxx        Acre
xxxxxxxxxx        Maranhão

Não quero ordenar pela População, o que eu preciso é deixar o ítem de lista Bahia em primeiro, Acre em segundo e Maranhão por terceiro.

Ruan Carlos

unread,
Jul 20, 2010, 2:03:28 PM7/20/10
to jque...@googlegroups.com
Pergunta: Vão existir vários <li> com o mesmo conteúdo?



EX:
>bahia<
>Acre<
>bahia<
>Maranhão<
>bahia<
>Acre<
>Acre<
>Maranhão<
>Maranhão<


-----------------------------------------------------------------
Ruan Carlos
@ruanltbg
www.ruancarlos.com.br
Bacharel em Sistemas de Informação - Desenvolvedor web


Thales Caravana

unread,
Jul 20, 2010, 2:13:26 PM7/20/10
to jque...@googlegroups.com
Cria um atributo qualquer nos teus itens da lista... ex.:

<li ordem="1">Bahia</li>
<li ordem="2">Acre</li>
<li ordem="3">Maranhão</li>

Aí é só fazer a ordenação por esse atributo. Usando o plugin que o Washington recomendou seria algo tipo:

$('li').sortElements(function(a, b){
    return $(a).attr("ordem") > $(b).attr("ordem") ? 1 : -1;
});

Na teoria, pelo menos, isso deveria funcionar...

Thales Caravana


2010/7/20 Ruan Carlos <ruan...@gmail.com>

Felipe Podestá

unread,
Jul 20, 2010, 2:17:17 PM7/20/10
to jque...@googlegroups.com
Olá Thales, eu já tentei fazer assim, mas devido à grande quantidade de informações da lista, ocorre uma travado no navegador.

Adicionei o attr title, depois ordenei mas demora muito. Preciso de algo mais rápido, se ouvesse um meio de ordenar direto, o tempo de execução seria menor!

Thales Caravana

unread,
Jul 20, 2010, 2:23:53 PM7/20/10
to jque...@googlegroups.com
Poste a parte do html/js que você está fazendo a ordenação. Fica mais fácil sugerir alguma otimização, sabendo como você está fazendo...

Uma das dúvidas que tive sem ver teu código é: em qual evento você ordena esses itens? Por que se for no carregamento da página somente, não seria melhor enviar os elementos já ordenados pelo servidor?

Thales Caravana


2010/7/20 Felipe Podestá <felipe....@gmail.com>

Thales Caravana

unread,
Jul 20, 2010, 2:25:17 PM7/20/10
to jque...@googlegroups.com
Poste a parte do html/js que você está fazendo a ordenação no http://jsbin.com/*

Thales Caravana


2010/7/20 Thales Caravana <thalesc...@gmail.com>

Felipe Podestá

unread,
Jul 20, 2010, 2:35:16 PM7/20/10
to jque...@googlegroups.com
Aqui está Thales: http://jsbin.com/ugiva3/4

Thales Caravana

unread,
Jul 20, 2010, 3:12:09 PM7/20/10
to jque...@googlegroups.com
3 coisas que podem lhe ajudar no problema de performance:

1 - Usar o seletor $("ul li") somente uma vez, e guardar o resultado em uma variável. Das próximas vezes que precisar, use o que você já tem, ao invés de buscar pelos itens novamente (cada vez que você inserir $("ul li") no código, o JQuery vai varrer a página buscando pelos itens);

2 - Dar preferência ao for do JavaScript, ao invés do each do JQuery - o each é elegante, mas tende a ser bem mais lento;

3 - Atualizar para a ultima versão do JQuery (1.4.2).

Dê uma olhada no 1 e 2 aqui: http://jsbin.com/ugiva3/6

Felipe Podestá

unread,
Jul 20, 2010, 10:17:16 PM7/20/10
to jque...@googlegroups.com
Obrigado Thales, mais uma para a coleção!

Abraço.
Reply all
Reply to author
Forward
0 new messages