JSFiddle:https://jsfiddle.net/3v2qav58/JQuery Event Bubbling問題
存在下拉菜單問題。
問題我的子類別列表項目裏面有一個ul/dropdown,所以我抓住列表項並使用'.find()'來獲取下拉列表,然後嘗試使用slideToggle。
問題是我有3個列表項目,當我點擊其他列表項目時,他們也打開並關閉其他列表項目。例如,第一個列表項目只有下拉列表,但如果您單擊第二個/第三個列表項目也切換。
我認爲這是關於事件冒泡的,因爲我認爲'.find()'只能遍歷下來而不是上升?
有些人可以解釋爲什麼會發生事件冒泡發生以及如何解決它?
乾杯
HTML
<ul class="dropdown">
<li class="dropdown-item">
<a href="">Cat 1</a>
<ul class="sub-dropdown">
<li class="dropdown-sub-item">
<a href="#">Sub Cat 1</a>
<ul class="sub-dropdown-child">
<li class="sub-dropdown-child-item"><a href="#">Sub Cat Child 1</a></li>
<li class="sub-dropdown-child-item"><a href="#">Sub Cat Child 2</a></li>
<li class="sub-dropdown-child-item"><a href="#">Sub Cat Child 3</a></li>
</ul>
</li>
CSS
.sub-dropdown,
.sub-dropdown-child {
display: none;
}
JQuery的
var dropdownItem = $(".dropdown-item");
var dropdownSubItem = $(".sub-dropdown");
var DropdownSubItem = $(".dropdown-sub-item");
var subDropdownChild = $(".sub-dropdown-child");
// Open
dropdownItem.on("click", function(e) {
e.preventDefault();
dropdownSubItem.show();
// Open sub cat
dropdownSubItem.on("click", function(e) {
e.stopPropagation();
$(this).find(subDropdownChild).slideToggle();
});
});
缺陷:它的幻燈片甚至'子貓兒童1' –
@MilanChheda謝謝,固定的點擊。 – Arg0n
@ Arg0n謝謝你,你能解釋我做錯了什麼嗎?你爲什麼這樣做?歡呼聲 –