JQuery 如何 select parent 而不是 children
JQuery how to select parent but not children
抱歉,这可能是一个简单的问题,但我还没有找到解决这个问题的方法。我是 JQuery 的新手,我有一些嵌套列表,我正在尝试将点击事件添加到 parent 列表,这将滑动切换 children 列表,我'我已经开始工作了,但是如果我单击任何 children 列表,它也会触发 slideToggle。有没有一种方法可以指定选择器在仅选择 parent class 而不是任何 children?
时执行操作
这是我正在尝试做的事情的简化版本:
$(document).ready(function() {
$(".liClass1").on("click", function(event){
event.stopPropagation();
$(this).find(".ulClass2").slideToggle();
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
<form>
<ul class="ulClass1">
<li class="liClass1">
<span>liClass1</span>
<ul class="ulClass2">
<li class="liClass2">
<span>liClass2</span>
</li>
</ul>
</li>
</ul>
</form>
</body>
</html>
您在 liClass1
上添加了点击处理程序。当您单击 ulClass2
元素时,它会触发相同的处理程序,因为它嵌套在 liClass1
中,所以事件将向上传播!
解决方案是丢弃 ulClass2
上的所有点击事件:
$('.ulClass2').on('click', function(evt) {
evt.stopPropagation();
})
$(document).ready(function() {
$(".liClass1").on("click", function(event){
$(this).children("ul").slideToggle();
});
$(".liClass2").on("click", function(event) {
event.stopPropagation();
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
<form>
<ul class="ulClass1">
<li class="liClass1">
<span>liClass1</span>
<ul class="ulClass2">
<li class="liClass2">
<span>liClass2</span>
</li>
</ul>
</li>
</ul>
</form>
</body>
</html>
抱歉,这可能是一个简单的问题,但我还没有找到解决这个问题的方法。我是 JQuery 的新手,我有一些嵌套列表,我正在尝试将点击事件添加到 parent 列表,这将滑动切换 children 列表,我'我已经开始工作了,但是如果我单击任何 children 列表,它也会触发 slideToggle。有没有一种方法可以指定选择器在仅选择 parent class 而不是任何 children?
时执行操作这是我正在尝试做的事情的简化版本:
$(document).ready(function() {
$(".liClass1").on("click", function(event){
event.stopPropagation();
$(this).find(".ulClass2").slideToggle();
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
<form>
<ul class="ulClass1">
<li class="liClass1">
<span>liClass1</span>
<ul class="ulClass2">
<li class="liClass2">
<span>liClass2</span>
</li>
</ul>
</li>
</ul>
</form>
</body>
</html>
您在 liClass1
上添加了点击处理程序。当您单击 ulClass2
元素时,它会触发相同的处理程序,因为它嵌套在 liClass1
中,所以事件将向上传播!
解决方案是丢弃 ulClass2
上的所有点击事件:
$('.ulClass2').on('click', function(evt) {
evt.stopPropagation();
})
$(document).ready(function() {
$(".liClass1").on("click", function(event){
$(this).children("ul").slideToggle();
});
$(".liClass2").on("click", function(event) {
event.stopPropagation();
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
<form>
<ul class="ulClass1">
<li class="liClass1">
<span>liClass1</span>
<ul class="ulClass2">
<li class="liClass2">
<span>liClass2</span>
</li>
</ul>
</li>
</ul>
</form>
</body>
</html>