переключение div -jquery

#javascript #jquery #toggle

#javascript #jquery #переключение

Вопрос:

У меня есть этот код:

 <div>
    <label id="hd" for="escol"">text</label> <select name="escol"
        class="drop">
        <option value="1" class="dr">show</option>
        <option value="2" class="dr">hide</option>

    </select>
</div>


<div>
    <label id ="showHide" for="type"">Tipo de formação</label> <select name="area"
        class="drop1">
        <option value="1" class="dr">Universidade</option>
        <option value="2" class="dr">Politécnico</option>
    </select>
</div>
  

и

 <script>
    $("#hd").click(function () {
      $(".drop1").slideToggle("slow");
    });
</script>
  

Как показать второй выбор, если в первом выборе выбран первый вариант, и скрыть второй выпадающий список, если выбран второй вариант первого выпадающего списка?

Ответ №1:

Во-первых, вы можете немного реструктурировать HTML, поместив <select> элементы внутри меток. Таким образом, вам не нужно использовать for атрибут label.

 <div>
    <label id="hd">
        text
        <select name="escol" class="drop">
            <option value="1" class="dr">show</option>
                <option value="2" class="dr">hide</option>    
        </select>
    </label>
</div>


<div>
    <label id="showHide">
        Tipo de formação
        <select name="area" class="drop1">
            <option value="1" class="dr">Universidade</option>
            <option value="2" class="dr">Politécnico</option>
        </select>
    </label>
</div>
  

Затем используйте .change() событие:

 $('#hd > select').change(function ()
{
    $('#showHide > select').toggle(this.selectedIndex === 0);
});
  

Демонстрация:http://jsfiddle.net/mattball/EaQea /

Ответ №2:

Вы можете добавить обработчик события при изменении в первый выпадающий список следующим образом:

   $("#escol").change(function(){
   if($(this).val() == "1"){
        $("#area").show();
   }else{
        $("#area").hide();  
   }
 });
  

И измените свой HTML на этот:

   <div>
    <label id="hd" for="escol">text</label> <select id="escol"
        class="drop">
        <option value="1" class="dr">show</option>
        <option value="2" class="dr">hide</option>

    </select>
</div>


<div>
    <label id ="showHide" for="type">Tipo de formação</label> <select id="area"
        class="drop1">
        <option value="1" class="dr">Universidade</option>
        <option value="2" class="dr">Politécnico</option>
    </select>
</div>
  

Обратите внимание, что у вас есть несколько дополнительных двойных кавычек в вашем html, которые я удалил, и я изменил name = «area» на id =»area» и name = «escol» на id = «escol».

Комментарии:

1. @Matt Ball Благодарит Мэтта. Отличное решение.

Ответ №3:

 $("select[name='escol']").change(function () { 
      $("#showHide").parent()['slide' ((this.value==2)?'Up':'Down')]("slow");
    });