Manipular o DOM

Manipular o conteúdo de elementos

O jQuery possui 3 métodos para manipulação do conteúdo dos elementos HTML:

  • text(): define ou devolve o conteúdo de texto de um elemento
  • html(): define ou devolve o conteúdo de texto e/ou html de um elemento
  • val(): define ou devolve o valor dos campos de um formulário

Define ou devolve o conteúdo de texto de um elemento:

Exemplo 1:

Obtém o conteúdo de texto de um elemento com o id “test”:

<script  
alert("Text: " + $("#test").text()); 
</script> 

<p id="test">This is some <b>bold</b> text in a paragraph.</p> 

Exemplo 2:

Define o conteúdo de texto de um elemento com o id “test”:

<script  
$("#test").text("This is another text."); 
</script> 

<p id="test">This is some <b>bold</b> text in a paragraph.</p> 

Define ou devolve o conteúdo de texto e/ou html de um elemento.

Exemplo 1:

Obtém o conteúdo de html de um elemento com o id “test”:

<script  
alert("HTML: " + $("#test").html()); 
</script> 

<p id="test">This is some <b>bold</b> text in a paragraph.</p> 

Exemplo 2:

Define o conteúdo de html de um elemento com o id “test”:

<script  
$("#test").html("<b><i>This is another text</i></b>."); 
</script> 

<p id="test">This is some <b>bold</b> text in a paragraph.</p> 

Define ou devolve o valor dos campos de um formulário.

Quando usado para ler valores, retorna o valor do primeiro dos elementos definidos no seletor.

Quando usado para definir valores, define o valor para todos os elementos definidos no selector.

Exemplo 1:

Obtém o conteúdo de um elemento com o id “nome”;

<script> 
alert("Value: " + $("#nome").val()); 
</script> 

<input type="texto" id="nome" name="nome"> 

Exemplo 2:

Lê o valor do elemento input type radio selecionado:

<script> 
alert( $("input[type='radio']:checked").val() ); 
</script> 

Sexo: <input type="radio" id="m" name="sexo" value="m">Masc 
<input type="radio" id="f" name="sexo" value="f">Fem 

Exemplo 3:

Lê os valores dos elementos input type checkbox selecionados:

<script> 
//obtem valores de todas as checkboxes checkadas 
$("input[type='checkbox']:checked").each(function() { 
alert( $(this).val() ); 
}); 
</script> 

Habilitações: <input type="checkbox" name="licenciatura" value="l">Licenciatura  
<input type="checkbox" name="mestrado" value="m">Mestrado 
<input type="checkbox" name="doutoramento" value="d">Doutoramento

Manipular os atributos de elementos

O método attr() é usado para obter valores de atributos de elementos. Consideremos um elemento com o id=”w3s”:

Exemplo 1:

O exemplo a seguir demonstra como obter o valor do atributo href de um link:

alert($("#w3s").attr("href"));

Exemplo 2:

O exemplo a seguir demonstra como alterar (set) o valor do atributo href de um link:

$(document).ready(function(){ 
   $("#w3s").attr("href","https://codenet.pt/jquery"); 
}); 

Exemplo 3:

O método attr () também permite definir vários atributos ao mesmo tempo.

O exemplo a seguir demonstra como definir a href e atributos de título ao mesmo tempo:

$(document).ready(function(){ 
   $("#w3s").attr({                              
      "href" : "https://codenet.pt/jquery", 
      "title" : "Codenet jQuery Tutorial" 
   }); 
}); 

Adicionar conteúdo de HTML

O jQuery possui 4 métodos que servem para adicionar novo conteúdo (elementos, html…):

  • append(): insere o conteúdo no final do(s) elemento(s) seleccionado(s)
  • prepend(): insere o conteúdo no inicio do(s) elemento(s) seleccionado(s)
  • after(): insere o conteúdo depois do(s) elemento(s) seleccionado(s)
  • before(): insere o conteúdo antes do(s) elemento(s) seleccionado(s)

Insere o conteúdo no final do(s) elemento(s) seleccionado(s).

Exemplo:

Considere-se o seguinte HTML:

<p id="p1">Texto qualquer...</p> 
<div id="divText"> 
   <p>texto qualquer...</p> 
</div>

Vamos adicionar um elemento <p> com o id=”p1” na <div> com o id=”divText” :

$(document).ready(function(){ 
   $("#divText").append($("#p1")); 
});

Irá dar origem ao seguinte HTML:

<div id="divText"> 
   <p>texto qualquer...</p> 
   <p id="p1">Texto qualquer...</p> 
</div>

Insere o conteúdo no inicio do(s) elemento(s) seleccionado(s).

Exemplo:

Considere-se o seguinte HTML:

<p id="p1">Texto qualquer...</p> 
<div id="divText"> 
   <p>texto qualquer...</p> 
</div> 

Vamos adicionar um elemento <p> com o id=”p1” na <div> com o id=”divText” :

$(document).ready(function(){ 
   $("#divText").prepend("#p1"); 
});

Irá dar origem ao seguinte HTML:

<div id="divText"> 
   <p id="p1">Texto qualquer...</p> 
   <p>texto qualquer...</p> 
</div>

Insere o conteúdo depois do(s) elemento(s) seleccionado(s).

Exemplo 1:

Considere o seguinte HTML:

<div class="container"> 
   <h2>Greetings</h2> 
   <div class="inner">Hello</div> 
   <div class="inner">Goodbye</div> 
</div>

Vamos adicionar um elemento após os elementos com a class=”inner”:

$(document).ready(function(){ 
   $('.inner').after('<p>Test</p>'); 
}); 

Irá dar origem ao seguinte HTML:

<div class="container"> 
   <h2>Greetings</h2> 
   <div class="inner">Hello</div> 
   <p>Test</p> 
   <div class="inner">Goodbye</div> 
   <p>Test</p> 
</div>

Exemplo 2:

Neste exemplo vamos adicionar vários elementos depois de um elemento <img>:

function afterText(){ 
   var txt1="<b>I </b>";                    
   var txt2=$("<i></i>").text("love ");     
   var txt3=document.createElement("big");   
   txt3.innerHTML="jQuery!"; 
   $("img").after(txt1,txt2,txt3);           
} 

Adiciona o conteúdo antes do(s) elemento(s) seleccionado(s).

Exemplo :

Considere o seguinte HTML:

<div class="container"> 
   <h2>Greetings</h2> 
   <div class="inner">Hello</div> 
   <div class="inner">Goodbye</div> 
</div>

Vamos adicionar um elemento <p> antes dos elementos com a class=”inner”:

$(document).ready(function(){ 
   $('.inner').before('<p>Test</p>'); 
}); 

Irá dar origem ao seguinte HTML:

<div class="container"> 
   <h2>Greetings</h2> 
   <p>Test</p> 
   <div class="inner">Hello</div> 
   <p>Test</p> 
   <div class="inner">Goodbye</div> 
</div> 

Remover conteúdo de HTML

O jQuery possui dois métodos para remover elementos e conteúdos:

  • remove(): remove o elemento selecionado e seus elementos filho
  • empty(): remove os elementos filho do elemento selecionado

Remove o elemento selecionado e seus elementos filho.

Exemplo:

O exemplo seguinte remove o elemento com o id=”div1” e todos os seus elementos filho:

$(document).ready(function(){ 
   $("#div1").remove(); 
});

Filtrar os elementos a remover

O método remove() também aceita um parâmetro, que permite filtrar os elementos a serem removidos.

O parâmetro pode ser qualquer um qualquer seletor válido em jQuery.

Exemplo:

O exemplo a seguir remove todos os elementos <p> com class = “itálico”:

$(document).ready(function(){ 
   $("p").remove(".italic"); 
});

Remove os elementos filho do elemento selecionado.

Exemplo:

O exemplo seguinte remove todos os elementos filho do elemento com o id=”div1”:

$(document).ready(function(){ 
   $("#div1").empty(); 
}); 

Seleção por filtragem

Os três métodos de filtragem mais básicos são first(), last() e eq(), que permite que você selecione um elemento específico com base na sua posição num grupo de elementos.

Outros métodos de filtragem, como filter() e not() permite que se selecionem os elementos que correspondem ou não correspondem, a determinados critérios.

O método first() devolve o primeiro elemento dos elementos selecionados.

Exemplo:

O exemplo a seguir seleciona o primeiro elemento <p> dentro do primeiro elemento <div>:

$(document).ready(function(){ 
   $("div p").first(); 
});

O método last() devolve o último elemento dos elementos selecionados.

Exemplo :

O exemplo a seguir seleciona o último elemento <p> dentro do último elemento <div>:

$(document).ready(function(){ 
   $("div p").last(); 
}); 

O método eq() devolve um elemento com um número de índice específico dos elementos selecionados.

Os números índices começam em 0, então o primeiro elemento terá o número de índice 0 e não 1.

Exemplo :

O exemplo a seguir seleciona o segundo elemento <p> (número de índice 1):

$(document).ready(function(){ 
   $("p").eq(1); 
}); 

O método filter() permite que especificar um critério. Elementos que não correspondem aos critérios são removidos da seleção, e os que correspondam serão devolvidos.

Exemplo :

O exemplo a seguir retorna todos os elementos <p> com nome da classe “intro”:

$(document).ready(function(){ 
   $("p").filter(".intro"); 
}); 

O método not() devolve todos os elementos que não correspondem aos critérios.

Dica: O método not() é o oposto de filter().

Exemplo :

O exemplo a seguir retorna todos os elementos <p> que não têm o nome da classe “intro”:

$(document).ready(function(){ 
   $("p").not(".intro"); 
});