2014-03-29 50 views
0

您好親愛的程序員,jQuery的多個觸發隱藏全部/只顯示一個

我有一個標題菜單,用「搜索」,「語言」,「時間」切換功能。

關於顯示onClick它工作正常,但我需要如果我點擊「搜索」只顯示「搜索」並隱藏所有「語言」,「時間」。

我的代碼

的.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'); 

}); 

和HTML

<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> 

回答

0

如果我明白你的意思,你要隱藏的兩個不同的元素時,點擊搜索你想要的他人隱瞞?

使用添加可以族元素在一起,然後添加類以顯示或隱藏:

$('#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(); 
+0

您好,請您可以加入到我的.js的代碼呢?如果我點擊「1」顯示我的內容,如果我點擊「2」顯示內容,但仍然顯示「1」,我需要隱藏「1」 – user3475503

0

我認爲這將隱藏其他部分,我還沒有試過,但希望將工作的ü

$('.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'); 


}); 
+0

您好Sachin Loonia,謝謝您的回答和您的時間,但仍然不適合我。我認爲我們需要添加一些你發佈的內容,但使用更好的方式。 如果我點擊搜索,搜索內容會顯示我,這很好! 但是,如果我點擊語言,語言內容顯示我,但仍然顯示我搜索內容..我需要隱藏此內容並應用此規則的所有選項..仍將只顯示一個內容如果用戶點擊這個.. – user3475503

0

這應該解決的問題。您可以使用此鏈接查看工作演示Working Demo

我做了什麼的總結。

  • 我加了一些文字鏈接在HTML(只是用於測試)
  • 我加.hide() jQuery的類單擊事件
  • 我添加了動畫的一點點前隱藏三大包裝類wrapper.toggle('slow')
  • 我改變wrapper.toggleClass('slow')wrapper.toggle('slow')

    $( '搜索箱包裝。')隱藏()。 $('。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'); 
    });