terça-feira, 15 de dezembro de 2009

JQuery - Extraindo o HTML de um DIV dentro de um each()

Eu já vi que muita gente que está começando a usar JQuery ter esse problema e eu também tive.

Você pegou vários DIV's e iterou através da função each() e na função de callback você quer ler o conteúdo do HTML para fazer algo com ele.

DIV -> each() -> this -> html()

Você leu no tutorial do Jquery que o this é a referencia para o objeto atual da iteração.
ai você tentou isso:

 $(document).ready(function(){
   $("div.classeDiv").each(function (i) {
     alert(this.html());
   });
 });

E deu erro. O browser disse que html() is not a function e você ficou morrendo de raiva. Pois é, eu também fiquei.

Me parece que o this referencia o objeto HTML mesmo, no meu caso, um DIV e esse objeto não tem a função html(). O que você precisa fazer é:

 $(this).html()

Agora vai funcionar porque this será transformado em um objeto do JQuery e esse possui a função html() e todas as outras que você viu na API do JQuery