I am targeting multiple elements with a jQuery selector by classname, and would like to:
- Fire the event of the first item only
- Ignore all other selector items
Here is a humorous vertical menu which demonstrates the problem, which if moused-over fast will fire concurrent events and behave like a slinky.
(function() {
"use strict";
$(".child").hide();
$(".parent").on("mouseover", function() {
var $this = $(this);
$this.siblings(".parent")
.find("ul")
.slideUp();
$this.find("ul")
.slideToggle();
});
})();
#sidebar,
li {
width: 300px;
}
ul {
padding: 0;
list-style-type: none;
}
li {
background-color: lightgrey;
font-weight: bold;
font-size: 24px;
text-align: center;
margin: 3px;
margin-left: 0;
list-style-position: inside;
border: 1px solid darkgray;
}
li:hover {
cursor: pointer;
}
<div id="sidebar">
<ul>
<li class="parent">Menu 1
<ul class="child">
<li>Item 1</li>
<li>Item 2</li>
</ul>
</li>
<li class="parent">Menu 2
<ul class="child">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</li>
<li class="parent">Menu 3
<ul class="child">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
</li>
<li class="parent">Menu 4
<ul class="child">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
</li>
</ul>
</div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>