j查询多个切换隐藏全部/只显示一个
jQuery multiple toggle hide all / show only one
亲爱的程序员们,你好,
我有一个标题菜单,带有"搜索","语言","时间"切换功能。
关于显示单击它工作正常,但我需要如果我单击"搜索"仅显示"搜索"并隐藏所有"语言","时间"。
我的代码
。.js
$( '.search-toggle' ).on( 'click.twentyfourteen', function( event ) {
var that = $( this ),
wrapper = $( '.search-box-wrapper' );
that.toggleClass( 'active' );
wrapper.toggleClass( 'hide' );
if ( that.is( '.active' ) || $( '.search-toggle .screen-reader-text' )[0] === event.target ) {
wrapper.find( '.search-field' ).focus();
}
} );
$( '.language-toggle' ).on( 'click.twentyfourteenn', function( event ) {
var that = $( this ),
wrapper = $( '.language-box-wrapper' );
that.toggleClass( 'active' );
wrapper.toggleClass( 'hide' );
} );
$( '.time-toggle' ).on( 'click.twentyfourteennn', function( event ) {
var that = $( this ),
wrapper = $( '.time-box-wrapper' );
that.toggleClass( 'active' );
wrapper.toggleClass( 'hide' );
} );
和网页
<div class="search-toggle">
<a href="#search-container" class="screen-reader-text"><?php _e( 'Search', 'twentyfourteen' ); ?></a>
</div>
<div class="language-toggle">
<a href="#language-container" class="language-screen-reader-text"><?php _e( 'Search', 'twentyfourteenn' ); ?></a>
</div>
<div class="time-toggle">
<a href="#search-container" class="screen-reader-text"><?php _e( 'Search', 'twentyfourteennn' ); ?></a>
</div>
<div id="search-container" class="search-box-wrapper hide">
<div class="search-box">
<?php get_search_form(); ?>
</div>
</div>
<div id="language-container" class="language-box-wrapper hide">
<div class="language-box">
language
</div>
</div>
<div id="time-container" class="time-box-wrapper hide">
<div class="time-box">
time
</div>
</div>
如果我明白你的意思,你想在点击搜索时隐藏两个不同的元素,你想让其他元素隐藏?
通过使用 add,您可以将元素组合在一起,然后添加类以显示或隐藏:
$('#element1_id').add('#element2_id').removeClass('show');
$('#element1_id').add('#element2_id').addClass('hide');
或者直接用jQuery隐藏它们。
$('#element1_id').add('#element2_id').hide();
您还可以为要隐藏在一起的元素指定一个通用类名:
即:切换
然后,您可以简单地使用类切换来隐藏它们:
$('.toggle').removeClass('show');
$('.toggle').addClass('hide');
或
$('.toggle').hide();
我认为这会隐藏其他部分,我没有尝试过,但希望对您有用
$( '.search-toggle' ).on( 'click.twentyfourteen', function( event ) {
var that = $( this ),
wrapper = $( '.search-box-wrapper' );
that.toggleClass( 'active' );
$( '.search-box-wrapper' ).hide();
$( '.time-box-wrapper' ).hide();
$( '.language-box-wrapper' ).hide();
if ( that.is( '.active' ) || $( '.search-toggle .screen-reader-text' )[0] === event.target ) {
wrapper.find( '.search-field' ).focus();
}
} );
$( '.language-toggle' ).on( 'click.twentyfourteenn', function( event ) {
var that = $( this ),
wrapper = $( '.language-box-wrapper' );
$( '.search-box-wrapper' ).hide();
$( '.time-box-wrapper' ).hide();
$( '.language-box-wrapper' ).hide();
that.toggleClass( 'active' );
} );
$( '.time-toggle' ).on( 'click.twentyfourteennn', function( event ) {
var that = $( this ),
wrapper = $( '.time-box-wrapper' );
$( '.search-box-wrapper' ).hide();
$( '.time-box-wrapper' ).hide();
$( '.language-box-wrapper' ).hide();
that.toggleClass( 'active' );
} );
这应该可以解决问题。您可以使用此链接查看工作演示 工作演示
总结我做了什么。
- 我在 html 中添加了一些文本作为链接(仅用于测试)
- 我添加了
.hide()
Jquery 类以隐藏点击事件之前的三个包装类 - 我为
wrapper.toggle('slow')
添加了一些动画 -
我把
$('.wrapper.toggleClass('slow')
改成了wrapper.toggle('slow')
search-box-wrapper').hide(); $('.language-box-wrapper').hide(); $('.time-box-wrapper').hide();
$('.search-toggle').on('click.SearchLink', function (event) { var that = $(this), wrapper = $('.search-box-wrapper'); that.toggleClass('active'); wrapper.toggle('slow'); if (that.is('.active') || $('.search-toggle .screen-reader-text')[0] === event.target) { wrapper.find('.search-field').focus(); } }); $('.language-toggle').on('click.LangLink', function (event) { var that = $(this), wrapper = $('.language-box-wrapper'); that.toggleClass('active'); wrapper.toggle('slow'); }); $('.time-toggle').on('click.TimeLink', function (event) { var that = $(this), wrapper = $('.time-box-wrapper'); that.toggleClass('active'); wrapper.toggle('hide'); });
相关文章:
- Facebook共享显示一个接一个的空白页面
- 当var==0时,我如何显示一个警报
- 如何在设定的时间间隔内一次只显示一个图像
- 当满足PHP条件时显示一个弹出窗口
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 如何在单击按钮时显示一个分区,同时隐藏另一个分区
- 一次显示一个隐藏指令-AngularJS
- 一次显示一个指令AngularJS
- 如何在谷歌地图中突出显示一个州点击一个国家的任何区域
- 在html页面的iframe中显示一个警告框
- Slding表单不会一次显示一个表单
- 在你离开之前,这个网站如何显示一个整洁的HTML框
- Onsen UI在点击时显示一个日期选择器
- 每行仅突出显示一个单元格
- 页面加载时显示一个随机图标
- 在html画布中显示一个图像,然后增大其大小
- 在谷歌地图上显示一个标记
- 只在表中突出显示一个单元格值
- 在谷歌可视化饼图中突出显示一个切片
- 如果所有单选框在jQuery中都有一个选择,则显示一个元素