Existe uma maneira sólida de detectar se um usuário está ou não usando um dispositivo móvel no jQuery? Algo parecido com o atributo CSS @media? Eu gostaria de executar um script diferente se o navegador estiver em um dispositivo portátil.
A função jQuery $.browser
não é o que eu estou procurando.
O que você está fazendo ao querer detectar um dispositivo móvel é aproximar-se um pouco demais de um conceito de "farejamento do navegador" IMO. Provavelmente seria muito melhor fazer alguma detecção de características. Bibliotecas como http://www.modernizr.com/ podem ajudar com isso.
Por exemplo, onde está a linha entre móvel e não móvel? Fica cada vez mais desfocada a cada dia.
Não é jQuery, mas eu encontrei isto: http://detectmobilebrowser.com/
Ele fornece scripts para detectar navegadores móveis em várias linguagens, uma das quais é o JavaScript. Isso pode ajudá-lo com o que você está procurando.
No entanto, como você está usando jQuery, você pode querer estar ciente da coleção jQuery.support. É uma coleção de propriedades para detectar as capacidades do navegador atual. A documentação está aqui: http://api.jquery.com/jQuery.support/
Como não sei exactamente o que estás a tentar conseguir, não sei qual deles será o mais útil.
Dito isto, acho que a sua melhor aposta é redirecionar ou escrever um script diferente para a saída usando uma linguagem do lado do servidor (se essa for uma opção). Como você realmente não sabe as capacidades de um navegador móvel x, fazer a detecção, e lógica de alteração no lado do servidor seria o método mais confiável. Claro, tudo isso é um ponto discutível se você não puder usar uma linguagem do lado do servidor :)
Se não estiver particularmente preocupado com pequenos ecrãs, pode usar a detecção de largura/altura. Desta forma, se a largura for inferior a um determinado tamanho, o site móvel é vomitado para cima. Pode não ser a forma perfeita, mas provavelmente será a mais fácil de detectar para múltiplos dispositivos. Você pode precisar colocar um específico para o iPhone 4 (resolução grande).