0

这是我的js:

<script type="text/javascript">
        $(document).ready(function(){
           $('#box1').hide();
           $('#box2').hide();
           $('#box3').hide();
           $("#thechoices").change(function(){
              if(this.value == 'all'){
                     $("#boxes").children().show();
                  }else{
                     $("#" + this.value).show().siblings().hide();
                  }
           });          
           $("#thechoices").change(); 
        });
</script>

和HTML:

    <div id="boxes">
       <div id="box1"><p>Box 1 stuff…&lt;/p></div>
       <div id="box2"><p>Box 2 stuff…&lt;/p></div>
       <div id="box3"><p>Box 3 stuff…&lt;/p></div>
    </div>

从下拉列表中选择后,我需要清除(清空)所有其余的选项/div,(即使我打开了它们不会出现的源代码)并同时禁用下拉列表,

如何做到这一点?

4

3 回答 3

1

移除隐藏元素:

$('#boxes').remove('div:hidden');

禁用下拉菜单:

$('#thechoices').attr('disabled', true);

因此:

    $(document).ready(function(){
       $('#boxes > div').hide();

       $("#thechoices").change(function(){
          if(this.value == 'all')
              $("#boxes").children().show();
          else
              $("#" + this.value).show().siblings().hide();

          $('#boxes').remove('div:hidden'); // remove hidden boxes from DOM
          $(this).attr('disabled', true); // disable drop down
       });

       $("#thechoices").change(); 
    });
于 2013-03-13T11:16:36.583 回答
0

如果我正确理解您的要求,则将脚本更改为

<script type="text/javascript">
        $(document).ready(function(){
           $("#thechoices").change(function(){
              var self = $(this);
              if(self.val() !== 'all'){
                     self.attr('disabled',true);
                     $("#boxes").empty();
              }
           });          
           $("#boxes").append('<div id="box1"><p>Box 1 stuff…&lt;/p></div>       <div id="box2">p>Box 2 stuff…&lt;/p></div>       <div id="box3"><p>Box 3 stuff…&lt;/p></div>');
});
</script>

和 HTMl 片段(无嵌套 div)

<div id="boxes">
</div>

如果您动态添加框,它们将不会显示在视图源中(视图源显示从服务器发送的 html)。然后当您更改选择的值时,您只需禁用选择并清空boxesdiv

于 2013-03-13T11:47:31.033 回答
0

就像 Jai 所说,也许您正在寻找的是动态创建它们。

你要找的是

$(document).ready(function(){
    $('#box1').hide();
    $('#box2').hide();
    $('#box3').hide();
    $("#thechoices").change(function(){
        if(this.value == 'all'){
            $("#boxes").children().show();
        }else{
            $("#" + this.value).show().siblings().remove();
            $(this).prop('disabled', 'disabled');
        }
    });          
    $("#thechoices").change(); 
});

jsFiddle 代码

于 2013-03-13T11:41:36.510 回答