Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
e para pegar a class itemMenu é fácil também:
$(this).parent().attr("id");
e para pegar todos id filhos é como o amigo disse, com o EACH
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.
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!
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.
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().