javascript - jq让自己隐藏,下一个兄弟元素显示,出错!
伊谢尔伦
伊谢尔伦 2017-04-11 12:18:48
[JavaScript讨论组]

想实现的是点击之后 自己隐藏 下一个兄弟元素显示,以此类推 可出现的结果是 后面的兄弟元素都显示, 求解!

效果:

执行代码部分:

出现的错误效果:

求解什么情况?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(5)
PHPz
var  tag=("#menu_con .tag:visible");
tag.hide();
if(tag.next().length==0){
    $("#menu_con .tag").eq(0).show();
}else{
    tag.next().show();
}
天蓬老师

$('#menu_con .tag')已经把所有menu_con下的tag都选中了,你以为你只是执行了第一个,其实他们每一个都执行了

PHPz

$('#menu_con .tag') 会遍历所有的p.tag

<style>
   #menu_con .tag {display:none;}
   #menu_con .tag.show {display:block;}
</style>
<p id="#menu_con">
    <p class="tag show"></p>
    <p class="tag"></p>
    <p class="tag"></p>
</p>
$('xxx').click(function(){
    $("menu_con .show").addClass('show').next().removeClass('show');
})
PHPz

因为你是选择的所有.tag这个class。
你得使用$(this);

$('.tag').on('click', function(){
    $(this).hide().next().show();
})
PHP中文网

先解释为什么,然后再给你解决方案。$('#menu_con .tag') 这个已经是选中所有满足的元素了,所以当你.css('display', 'none')时,所有都是隐藏了。而当你再.next().css() 时,也就是除了第一个元素外,其他所有元素都展示了。

你要的效果是“点击之后 自己隐藏 下一个兄弟元素显示”,那么可以这样:

$("#menu_con .tag").on('click', function(){
   $(this).css('display', 'none');
   $(this).next().css('display', 'block');
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号