【问题标题】:Show/Hide specific DIV when selecting an option from a dropdown using jQuery使用 jQuery 从下拉列表中选择选项时显示/隐藏特定 DIV
【发布时间】:2012-06-28 12:56:00
【问题描述】:

我正在尝试设置一个选择下拉列表,使用 jQuery,每个选项都将显示一个特定的 DIV。我的大部分功能都在工作,一旦选择了另一个选项,我就无法隐藏显示的 DIV。到目前为止,这是我的代码:

<select id="contact-location">
    <option value="">-- Select Location --</option>
    <option value="sydneyBranch">Sydney</option>
    <option value="melbourneBranch">Melbourne</option>
</select>

<div id="sydneyBranch" style="display:none">
    CONTENT
</div>

<div id="melbourneBranch" style="display:none">
    CONTENT
</div>


$(document).ready(function() {
    $('#contact-location').change(function(){
        var location = $(this).val(),
        div = $('#' + location);

        if($(this).val(location)) {
            div.show();
        } else {
            div.hide();
        }
    });
});

【问题讨论】:

    标签: jquery


    【解决方案1】:

    试试这个,

    Live Demo

     $(document).ready(function() {
        $('#contact-location').change(function(){
            var location = $(this).val(),
            div = $('#' + location);
    
            $('div').hide();
                div.show();
    
        });
    });​
    

    编辑

    目前 javascript 会隐藏所有的 div,如果我们为参与的 div 分配一些类并替换 $('div').hide(); 就可以防止这种情况发生。带有 $('.somecssClass').hide();

    的语句
    <div id="sydneyBranch" class="somecssClass" style="display:none">
        CONTENT
    </div>
    
    <div id="melbourneBranch" class="somecssClass" style="display:none">
        CONTENT
    </div>
    

    【讨论】:

    • $('div').hide() 将隐藏页面上的每个 div
    • 谢谢@charlietfl,更新了我的答案
    • 工作得很好,只需要向相关的 DIV 添加一个类,以便 .hide() 方法只针对它们。谢谢大家!
    【解决方案2】:

    如果您希望再次隐藏内容元素,请为内容元素添加一个公共类

    演示:http://jsfiddle.net/q8G2N/

    HTML:

       <div id="sydneyBranch" class="content" style="display:none">
    

    JS:

    $(function(){ /* shorthand $(document).ready(){*/
    
        $('#contact-location').change(function(){
            var location = $(this).val();
            /* don't do anything if blank option selected*/
             if( location !=''){
                 $('.content').hide();
                 $('#'+location).show();
             }
    
        });
    
    })
    

    【讨论】:

      【解决方案3】:

      试试这个

      <select>
              <option data-div-id="div1">Option 1</option>
              <option data-div-id="div2">Option 2</option>
              <option data-div-id="div3">Option 3</option>
          </select>
      
          <div id="div1" class="container"  style="display:none">1</div>
          <div id="div2" class="container"  style="display:none">2</div>
          <div id="div3" class="container"  style="display:none">3</div>
      
          $(document).ready( function() { 
              $("select").change(function(){
                  var divId = $(this).find(":selected").attr("data-div-id");
                  $(".container").hide();
                  $("#" + divId).show();
              });
          });
      

      【讨论】:

        【解决方案4】:

        这就是你要找的:

        var currentShowing = undefined;
        
        $(document).ready(function() {
            $('#contact-location').change(function(){
                var location = $(this).val(),
                div = $('#' + location);
        
                div.show();
                $(currentShowing).hide();
                currentShowing = div;
        
                if(currentShowing === undefined)
                    div = currentShowing;
            });
        });​
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多