jQuery:动画一级li
jQuery: Animate first-level li
我试图只为这个(此处缩短)菜单的第一级 li 设置动画:
<div class="test">
<ul id='nav'>
<li>Start</li>
<li>Basics
<ul>
<li class="level_2">Installation</li>
<li><a href="#">Syntax</a></li>
<li>Selektoren</li>
<li>Events und Ereignisse</li>
<li>Zusammenfassung</li>
</ul>
</li>
</ul>
</div>
这是一个 jsfiddle: https://jsfiddle.net/kfc79z6h/4/
所以我希望只有在点击 "Basics"、"Effekte"、"HTML"、"Traversing" 时菜单才会 slideUp/Down。
正如您在 fiddle 中看到的那样,我已经尝试了很多到目前为止找到的答案,但似乎没有任何效果。
希望对你有所帮助:)
由于 JS 事件在 DOM 中向上冒泡,点击事件最终将在父级上触发,即使实际点击发生在子级 <li>
上。只接受直接点击实际元素的最简单方法是检查元素 event.target
是什么,例如:
$("#nav > li").on( "click" , function(event){
if (event.target !== this) { return; }
// ...
}
这是更新后的 fiddle。
https://jsfiddle.net/rzkw9ce2/
有关 JS 事件传播的更多信息,请阅读 Arun 对此的出色回答post:
What is event bubbling and capturing?
我已经为您更新了fiddle
如果您对要触发点击的 li
个元素使用 class
,会更简单、更清晰。
例如:
$('.accordion').click(function(){
// something
})
如果您只想为具有 .accordion
class 的元素创建点击事件,请检查当前点击的元素是否来自点击事件目标
if(e.target !== this) return;
JavaScript 事件通过文档对象模型向上移动 (DOM)。当您单击子级时,即使您单击了 <li>
,单击事件也会向上移动到父级。要获得直接点击,请使用 event.target
:
检查点击了哪个项目
$("#nav > li").on("click", function(event) {
if (event.target !== this) { return; }
//blah blah here
}
我试图只为这个(此处缩短)菜单的第一级 li 设置动画:
<div class="test">
<ul id='nav'>
<li>Start</li>
<li>Basics
<ul>
<li class="level_2">Installation</li>
<li><a href="#">Syntax</a></li>
<li>Selektoren</li>
<li>Events und Ereignisse</li>
<li>Zusammenfassung</li>
</ul>
</li>
</ul>
</div>
这是一个 jsfiddle: https://jsfiddle.net/kfc79z6h/4/
所以我希望只有在点击 "Basics"、"Effekte"、"HTML"、"Traversing" 时菜单才会 slideUp/Down。
正如您在 fiddle 中看到的那样,我已经尝试了很多到目前为止找到的答案,但似乎没有任何效果。
希望对你有所帮助:)
由于 JS 事件在 DOM 中向上冒泡,点击事件最终将在父级上触发,即使实际点击发生在子级 <li>
上。只接受直接点击实际元素的最简单方法是检查元素 event.target
是什么,例如:
$("#nav > li").on( "click" , function(event){
if (event.target !== this) { return; }
// ...
}
这是更新后的 fiddle。
https://jsfiddle.net/rzkw9ce2/
有关 JS 事件传播的更多信息,请阅读 Arun 对此的出色回答post:
What is event bubbling and capturing?
我已经为您更新了fiddle
如果您对要触发点击的 li
个元素使用 class
,会更简单、更清晰。
例如:
$('.accordion').click(function(){
// something
})
如果您只想为具有 .accordion
class 的元素创建点击事件,请检查当前点击的元素是否来自点击事件目标
if(e.target !== this) return;
JavaScript 事件通过文档对象模型向上移动 (DOM)。当您单击子级时,即使您单击了 <li>
,单击事件也会向上移动到父级。要获得直接点击,请使用 event.target
:
$("#nav > li").on("click", function(event) {
if (event.target !== this) { return; }
//blah blah here
}