jQuery / Método / jQuery.trim() - Remover espaços das extremidades
jQuery.trim() removia espaços do começo e do fim de uma string, mantendo os internos. Obsoleto desde o jQuery 3.5 e removido no 4.0, deve ser substituído em código novo por text.trim(). Na migração, revise entradas não textuais como null, undefined e números.
Conferir versão e alcance da remoção
A API jQuery.trim() e o guia de migração do jQuery 4 registram a remoção. O erro $.trim is not a function no jQuery 4 pode vir dessa mudança. Era uma utilidade global $.trim(text) ou jQuery.trim(text), não um método de elementos selecionados.
| Aspecto | Antigo $.trim(text) | Nativo text.trim() |
|---|---|---|
| Disponibilidade | Obsoleto 3.5, removido 4.0 | Método JavaScript de strings |
| Alcance | Espaços das duas extremidades | Espaços das duas extremidades |
| Espaços internos | Preservados | Preservados |
| Original | Devolve string resultante | Devolve sem alterar o original |
| Outros tipos | Revisar comportamento antigo de null etc. | Verificar tipo/conversão antes de value.trim() |
String.prototype.trim() devolve nova string sem espaços e terminadores de linha nas pontas. Não reduz espaços internos nem remove todos. Inclui tabulações, quebras e espaços inseparáveis NBSP, mas nem todo caractere invisível é espaço.
Exemplo completo de espaços externos e internos
Salve todo o código em UTF-8 como trim-demo.html e abra no navegador. A interface carrega o arquivo oficial do jQuery 4.0.0 pela rede de distribuição de conteúdo, CDN, exigindo internet e sem instalação. O .trim() da string não precisa de jQuery.
O exemplo usa trim nativo e só compara o resultado antigo se $.trim existir. Foi executado sem jQuery Migrate com 3.7.1 e 4.0.0, confirmando presença no primeiro e ausência no segundo. Espaços, Unicode, aplicação ao campo e conversões abaixo também foram verificados.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Migrate from jQuery trim</title>
<script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
<style>
body { font: 16px/1.6 sans-serif; max-width: 760px; margin: 24px auto; padding: 16px; }
button, select, textarea { font: inherit; margin: 4px; max-width: 100%; }
textarea { display: block; width: 90%; min-height: 90px; }
pre { white-space: pre-wrap; overflow-wrap: anywhere; }
</style>
</head>
<body>
<h1>Trim only the edges of a string</h1>
<label for="sample">Sample:</label>
<select id="sample"><option value="spaces">Edge and internal spaces</option><option value="lines">Tabs and line breaks</option><option value="nbsp">Non-breaking spaces</option><option value="zero">Zero-width spaces</option><option value="empty">Empty string</option></select>
<label for="value">Value:</label>
<textarea id="value"></textarea>
<button type="button" id="preview">Preview trim</button>
<button type="button" id="apply">Apply to field</button>
<button type="button" id="reset">Reset</button>
<pre id="result" aria-live="polite"></pre>
<pre id="legacy"></pre>
<script>
$(function () {
const samples = {
spaces: " Alpha Beta ",
lines: "\t\nAlpha Beta\n ",
nbsp: "\u00a0Alpha\u00a0",
zero: "\u200bAlpha\u200b",
empty: ""
};
function preview() {
const before = $("#value").val();
const after = before.trim();
$("#result").text(`before=${JSON.stringify(before)}\nafter=${JSON.stringify(after)}\nlength=${before.length} -> ${after.length}`);
$("#legacy").text(typeof $.trim === "function"
? `Legacy result: ${JSON.stringify($.trim(before))}`
: "jQuery.trim is unavailable; native trim is used");
}
function loadSample() { $("#value").val(samples[$("#sample").val()]); preview(); }
$("#sample").on("change", loadSample);
$("#preview").on("click", preview);
$("#apply").on("click", function () { $("#value").val($("#value").val().trim()); preview(); });
$("#reset").on("click", function () { $("#sample").val("spaces"); loadSample(); });
loadSample();
});
</script>
</body>
</html>
Inicialmente somem apenas quatro espaços externos; os dois internos ficam:
before=" Alpha Beta "
after="Alpha Beta"
length=15 -> 11
- Preview trim mostra o resultado sem alterar os espaços do campo.
- Apply to field escreve explicitamente com .val() e muda o campo.
- Tabs and line breaks remove tabulações/quebras externas e preserva dois espaços entre Alpha e Beta.
- Non-breaking spaces remove U+00A0, reduzindo comprimento de 7 para 5.
- Zero-width spaces mantém U+200B e comprimento 7 porque não é removido.
- Empty string devolve vazio. Reset restaura amostra e campo iniciais.
Definir política para null, undefined e 0
O antigo $.trim() podia converter null/undefined em vazio e 0/false em "0"/"false". Trocar diretamente por null.trim(), undefined.trim() ou .trim() de um número não equivale. Se o contrato exige strings, verifique o tipo e trate entradas incorretas antes.
Se a política for vazio para null/undefined e strings para os demais valores primitivos, converta explicitamente como abaixo. Execute este trecho completo no Console das ferramentas de desenvolvimento. Ele não garante compatibilidade universal com objetos arbitrários.
function trimNullable(value) {
return String(value ?? "").trim();
}
console.log(`null=${JSON.stringify(trimNullable(null))}`);
console.log(`undefined=${JSON.stringify(trimNullable(undefined))}`);
console.log(`zero=${JSON.stringify(trimNullable(0))}`);
console.log(`false=${JSON.stringify(trimNullable(false))}`);
console.log(`NBSP=${JSON.stringify("\u00a0A\u00a0".trim())}`);
console.log(`zero-width length=${"\u200bA\u200b".trim().length}`);
null=""
undefined=""
zero="0"
false="false"
NBSP="A"
zero-width length=3
?? só aplica vazio a null/undefined, preservando 0 e false. value || "" também pode descartá-los. String(null).trim() produz "null", não vazio. Se ausência e string vazia precisam ser diferentes, valide antes da conversão.
Separar limpeza de espaços e validação
Uma string só de espaços fica vazia. Isso pode servir a buscas e nomes comuns, mas não a todo valor com espaços externos significativos. Defina as regras do campo antes de alterar a entrada.
trim não remove tags HTML, altera maiúsculas, normaliza espaços internos nem faz validação de segurança. O exemplo mostra entradas semelhantes a HTML literalmente com .text(). Para caracteres invisíveis restantes, examine pontos de código e a normalização necessária.
Se o erro persistir, confira versão real, chamadas $.trim restantes, plugins e tipos de entrada. Após substituir, teste null, undefined, 0, vazio, apenas espaços e casos reais. Ajustar chamadas e regras conforme o guia de migração facilita a manutenção em vez de reduzir a versão da biblioteca.




