Reputation: 267
I am unable to target an element with an id, whenever there is a click event. It's a pretty simple solution, no idea why this isn't working out. Please help me with it.
$('ul.main-menu li').click(function(e) {
e.preventDefault();
if ($(this).siblings('li').find('a').has('#has-sub-menu')) {
alert('sub-menu')
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="main-menu">
<li class="main-menu-item">
<a href="#">Home</a>
</li>
<li class="main-menu-item">
<a id="has-sub-menu" href="#">Company</a>
</li>
</ul>
Upvotes: 0
Views: 40
Reputation: 1
You can directly add the click event on the a
with the id
:
$('#has-sub-menu').click(function(e) {
e.preventDefault();
alert('sub-menu');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="main-menu">
<li class="main-menu-item">
<a href="#">Home</a>
</li>
<li class="main-menu-item">
<a id="has-sub-menu" href="#">Company</a>
</li>
</ul>
Upvotes: 1
Reputation: 3440
so the li is not the click event, the A is.
I've also made it a class of submenu. not an ID.
<ul class="main-menu">
<li class="main-menu-item">
<a href="#">Home</a>
</li>
<li class="main-menu-item">
<a class="has-sub-menu" href="#">Company</a>
</li>
</ul>
<script >
$('ul.main-menu li a').click(function(e) {
e.preventDefault();
if ($(this).hasClass('has-sub-menu')) {
alert('sub-menu')
}
});
</script>
Upvotes: 1