Ir para conteúdo

POWERED BY:

Arquivado

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

JRRC

Pegar elementos após um clique

Recommended Posts

Olá a todos, boa noite.
Pessoal, gostaria de saber como que faço para pegar dois valores após um clique e armazena-los em arrays diferentes.

Suponha que eu tenha o seguinte código HTML abaixo que represente um menu com seus sub-menus.

 
<ul class="menuClasses">                
    <li>
        <a href="#" class="itemMenu" id="Disease">+ Disease</a>
        <div class="conteudoMenu"> 
            <a href="#" id="name">- name</a>
            <a href="#" id="class">- class</a>
        </div>
    </li>
    
    <li>
        <a href="#" class="itemMenu" id="Drug">+ Drug</a>
        <div class="conteudoMenu">    
            <a href="#" id="name">- name</a>
            <a href="#" id="indication">- indication</a>
            <a href="#" id="metabolism">- metabolism</a>      
            <a href="#" id="pregnancyCategory">- pregnancyCategory</a>  
        </div>
    </li>
</ul>

Onde após eu clicar em algum elemento da minha class conteudoMenu além de pegar o valor do id que estar dentro da minha tag <a></a> também pegasse o valor do id da minha class itemMenu.

 

Tentei da seguinte maneira abaixo, mas infelizmente só retorna o valor do id que estar dentro da classe conteudoMenu.

 

 

// Pega o elemento do Menu
function itemMenu(){
  $(".itemMenu").click(function(){
    $(this).attr("id");
  });
}
 
// Pega os subelementos do menu no click
$(".conteudoMenu a").click(function(){
  var subMenu = $(this).attr("id");
  alert(itemMenu() + " - " + subMenu)
});

 

Alguém poderia me dizer aonde que estou errando e como que faço para corrigir?

Desde de já obrigado pela ajuda de todos.

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como se trata de um nó com vários elementos filho vc vai te que percorrer todos para listá-los tente a função each().

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, bom dia.

Primeiramente obrigado pela ajuda :)

 

Tentei da seguinte maneira abaixo, mas infelizmente ainda não estar dando certo.

 

$(".conteudoMenu a").click(function(){
  var subMenu = $(this).attr("id");
  var menu;
  $(".itemMenu").each(function(){
      menu = $(this).attr("id");
  });
  alert(menu + " - " + subMenu)
});

 

O que estar acontecendo é o seguinte, quando clico em qualquer elemento da minha class conteudoMenu ele me retorna apenas o último valor contido no id da minha classe itemMenu, além de retornar corretamento o elemento da minha class conteudoMenu é claro .

 

Por exemplo: suponha que meu menu esteja da seguinte maneira abaixo.

 

<ul class="menuClasses">                
    <li>
        <a href="#" class="itemMenu" id="Disease">+ Disease</a>
        <div class="conteudoMenu"> 
            <a href="#" id="item1">- item1</a>
        </div>
    </li>
    
    <li>
        <a href="#" class="itemMenu" id="Drug">+ Drug</a>
        <div class="conteudoMenu">    
            <a href="#" id="item2">- item2</a> 
        </div>
    </li>
 
    <li>
        <a href="#" class="itemMenu" id="Ingredient">+ Ingredient</a>
        <div class="conteudoMenu">    
            <a href="#" id="item3">- item3</a> 
        </div>
    </li>
</ul>

 

Quando clico em qualquer elemento independente onde ele esteja, minha variável menu sempre retorna Ingredient.

O que eu gostaria era que retornasse o valor corrente no qual o meu elemento da minha class conteudoMenu pertence.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade você não precisa de each.

E sempre vai exibir o último porque você está subscrevendo o valor a cada iteração do each

 

O que você quer está a dois elementos atrás, então basta chegar até ele, veja:

 

$(".conteudoMenu a").click(function(){

  var subMenu = $(this).attr("id");
  var menu = $(this).parent(".conteudoMenu").parent('li').find('a').attr('id');

  alert(menu +' - '+subMenu);

});

Link funcionando: http://jsfiddle.net/GSzGS/2/

 

Qualquer dúvida, posta ae!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado fernandotholl, funcionou perfeitamente.

Agora o que eu gostaria de fazer era após clicar em um dos valores do submenu armazenar o valor do menu e submenu em um Map<K,V>

 

Nem sei se isso é possível, mas irei pesquisar aqui.

Qualquer dúvida retorno ao poster.

Obrigado.

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.