切换除单击的子元素之外的所有元素
Toggle all elements except the sub element of clicked one
我需要切换(显示/隐藏)<p>
,这是点击<li>
的子元素,而所有其他<p>
都应该隐藏。我能够做到这一点。
但是单击相同的元素(现在显示)不会隐藏。如何实现这一点?
$(document).ready(function(){
$("p").hide();
$("li").click(function(){
$("p").not(this).hide(200);
$("p", this).toggle(200);
});
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body>
<ul>
<li><a>q1</a>
<p>a1</p>
</li>
<li><a>q2</a>
<p>a3</p>
</li>
<li><a>q3</a>
<p>a3</p>
</li>
<li><a>q4</a>
<p>a4</p>
</li>
</ul>
</body>
</html>
您需要将
要排除的p
元素传递给not()
,您现在正在传递this
它指的是li
元素
$(document).ready(function() {
$("p").hide();
$("li").click(function() {
var $ps = $("p", this).stop(true).toggle(200);
$("p").not($ps).stop(true).hide(200);
});
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body>
<ul>
<li><a>q1</a>
<p>a1</p>
</li>
<li><a>q2</a>
<p>a3</p>
</li>
<li><a>q3</a>
<p>a3</p>
</li>
<li><a>q4</a>
<p>a4</p>
</li>
</ul>
</body>
</html>
$(document).ready(function(){
$("p").hide();
$("li").click(function(){
$(this).find('p').toggle(200);
$(this).siblings('p').hide(200);
});
});
演示尝试这样做
使用这个简单的逻辑:
$(document).ready(function(){
$("p").hide();
$("li").click(function(){
$("p").not(this).hide(200);
if($("p",this).is(":visible")){
$("p", this).hide(200);}
else{
$("p", this).show(200);}
});
});
检查这个小提琴
像这样更改 jQuery 代码
$(document).ready(function(){
$("p").hide();
$("li").click(function(){
$("p").not($(this).find("p")).hide(200);
$(this).find("p").toggle(200);
});
});
相关文章:
- 对同一类中的所有元素单击一次
- 元素单击处理程序由一个神秘的函数取消设置
- 在处理元素单击事件期间,在循环内部调用window.open()
- JS-是否可以获得元素单击位置的确切宽度
- 使用 jQuery 创建动态元素 单击事件始终返回 for 循环中的最后一个索引
- 选中父元素单击上的复选框
- 在窗口和其他元素单击时隐藏
- Polymerjs 的自定义菜单元素单击事件
- 使用 javascript 函数查找元素单击的类
- 元素单击仅使用 javascript
- 等待文档鼠标按下完成,然后元素单击才能开始
- 由于父元素的顶部和位置,子元素单击不起作用
- Jquery-在共享相同类名的其他元素之间选择一个元素(单击时)
- 目标元素单击子元素,获取父属性
- 根据元素单击更改选择选项值
- 为listview上动态生成的元素单击event
- 扩展原生元素单击事件
- 可以被许多元素使用的Javascript函数,然后区分哪个元素单击了它
- 当元素单击时隐藏iframe
- 按钮元素单击事件以切换类不起作用