Изменить отображение в зависимости от выбранной опции - PullRequest
3 голосов
/ 22 января 2012

Я хочу изменить 2 разных стиля div с помощью jQuery. Пока значение равно div1, будет отображаться div1. И когда значение равно div2, будет показано div2. Я думаю, я не могу сделать это с "если / еще" в JQuery.

 <style>
  #div1 { display: block; background-color: red; height:300px; width:300px;}
  $div2 { display: none; background-color: blue; height:300px; width:300px;}
  </style>

  <select id="divit">
    <option value="div1">div1</option>
    <option value="div2">div2</option>
  </select>
<script>
    function displayVals() {
      var divoneValues = $("#divit").val("div1");
      var divtwoValues = $("#divit").val("div2");
      $("#div1").css("display", "none");
       $("#div2").css("display", "block");
    }     
    $("select").change(displayVals);
    displayVals();         

</script>
<div id="div1"></div>
<div id="div2"></div>

</body>
</html>

Ответы [ 7 ]

1 голос
/ 22 января 2012

Это должно сработать:

<style>
  #div1 { display: block; background-color: red; height:300px; width:300px;}
  #div2 { display: none; background-color: blue; height:300px; width:300px;}
</style>

<select id="divit">
    <option value="div1">div1</option>
    <option value="div2">div2</option>
</select>
<script>
    $("#divit").on('change', function() {
        var sel = $("select").val();
        if (sel=='div1') {
           $("#div1").css("display", "block");
           $("#div2").css("display", "none");
        }else if (sel=='div2') {
           $("#div1").css("display", "none");
           $("#div2").css("display", "block");
        }
    });     
</script>
<div id="div1"></div>
<div id="div2"></div>

FIDDLE

0 голосов
/ 22 января 2012

Это автоматически скроет любые невыбранные опции, покажет только один выбранный, если вам нужно поставить более двух вариантов

<style>
    #div1 { position: absolute; display: block; background-color: red; height:300px; width:300px;}
    #div2 { position: absolute; display: none; background-color: blue; height:300px; width:300px;}
    #div3 { position: absolute; display: none; background-color: green; height:300px; width:300px;}
    #div4 { position: absolute; display: none; background-color: pink; height:300px; width:300px;}
    #div5 { position: absolute; display: none; background-color: aqua; height:300px; width:300px;}
</style>

<select id="divit">
    <option value="div1">div1</option>
    <option value="div2">div2</option>
    <option value="div3">div3</option>
    <option value="div4">div4</option>
    <option value="div5">div5</option>
</select>

<script>

    function displayVals()
    {
        $('select#divit > option').each(function()
        {
            if ($(this).val() == $('select#divit').val())
            {
                $('#'+$(this).val()).css('display', 'block');
            }
            else
            {
                $('#'+$(this).val()).css('display', 'none');
            }
        });
    }     
    $("select").change(displayVals);
    displayVals();         

</script>

<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div>
<div id="div5"></div>

Только сторонапримечание: обратите внимание, что в вашем коде вы ставите $ вместо # в вашей части стиля для div2
. Правильное значение будет #div2 { вместо $div2 {* 1014.*

0 голосов
/ 22 января 2012
<style>
  #div1 { display: block; background-color: red; height:300px; width:300px;}
  #div2 { display: none; background-color: blue; height:300px; width:300px;}
  </style>

  <select id="divit">
    <option value="div1">div1</option>
    <option value="div2">div2</option>
  </select>
<script>
    $('#divit').change(function(){
hideotherdivs($(this).val());
});

function hideotherdivs(div_not_to_hide)
{
$('#div1').hide();
$('#div2').hide();
//add all divs that have to be included in this scheme of hiding and showing
$(eval(div_not_to_hide)).show();
}
</script>
<div id="div1"></div>
<div id="div2"></div>

ДЕМОНСТРАЦИЯ

0 голосов
/ 22 января 2012

Как это jsFiddle ?

$('#divit').change(function(){
    $('div').hide();
    $('#'+$(this).val()).show();
});
0 голосов
/ 22 января 2012

Попробуйте это:

$(document).ready(){

    $(#divit).change(function(){
        if($(this).val() == 'div1'){
            $('#div2').hide();
            $('#div1').show();
        }else{
            $('#div1').hide();
            $('#div2').show();
        }
    });

}
0 голосов
/ 22 января 2012

jQuery - это просто библиотека Javascript.Вы по-прежнему используете код Javascript для доступа к библиотеке jQuery, поэтому вы можете использовать любые команды Javascript.

function displayVals() {
  var selected = $("#divit").val();
  if (selected == "div1") {
    $("#div1").hide();
    $("#div2").show();
  } else {
    $("#div1").show();
    $("#div2").hide();
  }
}
$("select").change(displayVals);
displayVals();
0 голосов
/ 22 января 2012

$('select').val() возвращает значение выбранного параметра. Так что используйте switch вот так:

function displayVals() {
    switch ($("#divit").val()) {
        case 'div1':
            $("#div1").show();
            $("#div2").hide();
        break;
        case 'div2':
            $("#div1").hide();
            $("#div2").show();
        break;
    }
}

Демо: http://jsfiddle.net/TimWolla/2KaTK/

...