Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pedro Roccon

jQuery pegar id de elementos enquanto houver...

Recommended Posts

Galera, primeiramente bom dia à todos. E obrigado pela ajuda!

 

Seguinte... Eu tenho um sistema que inclui várias Divs em uma página, pode ser somente 1 div, ou podem ser várias divs. Todas essas divs possuem a classe .chat-message e cada uma delas possui um id aleatório (ex: <div id="36" class="chat-message"></div>, <div id="72" class="chat-message"></div>).

 

Estou com 1 problema, preciso executar uma ação para cada uma dessas divs, só que eu preciso pegar o id de cada div para essa ação.

 

Gostaria que meu código verificasse quantas divs com a classe .chat-message existem. Após isso ele pega o ID da primeira DIV com a classe .chat-message, e executa um código... Feito isso ele vai para a segunda DIV com a classe .chat-message, pega o ID da segunda DIV e executa o mesmo código, e assim sucessivamente até acabarem as DIVS da página.

 

Alguém pode me dar uma luz? Algum método que faça isso?

 

Desde já agradeço,

Muito Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, você tem que pegar o elemento pai,
procura por parent / parents em jQuery, e veja se isso te ajuda.

 

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

para saber qntas tem, basta fazer um .length

 

e para executar um código para cada uma delas, use o .each

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi... Eu fiz um exemplo aqui, e irei postar o que o script retorna para mim... Estou utilizando um jQuery.post().

 

Meu HTML:

<div id="36" class="chat-messages">
   <ul>
   </ul>
</div>
<div id="37" class="chat-messages">
   <ul>
   </ul>
</div>
<div id="38" class="chat-messages">
   <ul>
   </ul>
</div>

 

Meu Javascript:

jQuery(function() {

   // Função que desejo executar para cada elemento.
   function checkMessages(id) {
      console.log("O ID atual que a função está executando é: " + id);
      jQuery.post('checkMessages.php', {id : id, request : 0}, function(output) {
         jQuery('#' + id + ' ul').append('<li>' + output + '</li>');
      });
   }

   // Pegando os elementos .chat-messages individuais.
   jQuery('.chat-messages').each(function(){
      id = jQuery(this).attr('id');
      setInterval(function() { checkMessages(id); }, 1000);
   });

});

 

A função checkMessages sempre me retorna o ID da última DIV, ou seja... 38. Eu precisava que cada jQuery.post() entrasse com o ID de cada div, fizesse a ação solicitada e desse um append na DIV com o mesmo ID que foi passado em checkMessages.



Galera, consegui resolver. Deixo meu código para caso alguém tenha essa dúvida. Muito obrigado à todos pelas dicas! O problema estava na minha função each.

 

Código:

jQuery('.chat-container').each(function(id) { 
	id = jQuery(this).attr('id');
	setInterval(function() { checkMessages(id); }, 2000);
});

 

Referência:

http://stackoverflow.com/questions/5292037/using-the-jquery-each-function-to-loop-through-classname-elements

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.