Reputation: 105
In the following code :
<div class="dropdown">
<a href="/Activites" id="menu_item_activites">
<span><i class="icon-svg_3_activite"></i>Activités
</span>
</a>
<ul class="dropdown-menu">
<li><a href="/Coloriage">Coloriages</a></li>
<li><a href="/Activites/Cuisine">Cuisine</a></li>
<li><a href="/Activites/Boutique">Boutique</a></li>
</ul>
</div>
When clicking on the "Coloriages" link, I would like to retrieve the closest id above, so "menu_item_activites" or the text.
I tried numerous things including : var x = $(this).closest("span").text(); alert(x);
but that return me an empty alert?
Thanks !
Upvotes: 1
Views: 63
Reputation: 51
Here is the exact code below,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('.dropdown-menu a').click(function(e){
e.preventDefault();
console.log($(this).closest('.dropdown-menu').prev().attr('id'));
});
});
</script>
</head>
<body>
<div class="dropdown">
<a href="/Activites" id="menu_item_activites">
<span><i class="icon-svg_3_activite"></i>Activités
</span>
</a>
<ul class="dropdown-menu">
<li><a href="/Coloriage">Coloriages</a></li>
<li><a href="/Activites/Cuisine">Cuisine</a></li>
<li><a href="/Activites/Boutique">Boutique</a></li>
</ul>
</div>
</body>
</html>
And rest of you can modify it according to your need.
Upvotes: 0
Reputation: 42054
You may select the element dropdown and then the children anchor:
$('.dropdown-menu').on('click', function(e) {
e.preventDefault();
var x = $(this).closest('.dropdown').children('a');
console.log('ID: ' + x.attr('id') + ' text: ' + x.text().trim());
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="dropdown">
<a href="/Activites" id="menu_item_activites">
<span><i class="icon-svg_3_activite"></i>Activités
</span>
</a>
<ul class="dropdown-menu">
<li><a href="/Coloriage">Coloriages</a></li>
<li><a href="/Activites/Cuisine">Cuisine</a></li>
<li><a href="/Activites/Boutique">Boutique</a></li>
</ul>
</div>
Upvotes: 0
Reputation: 5310
Here you go. the return false;
is only there so that the snippet below doesn't 404 :)
$(".dropdown-menu a").click(function() {
var x = $(this).parents("div").find("a").attr("id");
console.log(x);
return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="dropdown">
<a href="/Activites" id="menu_item_activites">
<span><i class="icon-svg_3_activite"></i>Activités
</span>
</a>
<ul class="dropdown-menu">
<li><a href="/Coloriage">Coloriages</a></li>
<li><a href="/Activites/Cuisine">Cuisine</a></li>
<li><a href="/Activites/Boutique">Boutique</a></li>
</ul>
</div>
Upvotes: 1