Показать / скрыть div при выборе опции с показом предварительно выбранного div

0

Я хотел бы знать, как показывать скрытый div в зависимости от выбранного параметра, причем div из предварительно выбранного варианта уже показан.

<select name="fruits" id="fruits">
 <option value="apple" data-fruit-name="apple" selected="selected">Apple</option>
 <option value="mango" data-fruit-name="mango">Mango</option>
</select>

<div class="message" data-fruit-name="apple">I'm Apple.</div>
<div class="message" data-fruit-name="mango">I'm Mango.</div>

Сообщение, если оно не выбрано, должно быть скрыто. Но поскольку Apple предварительно выбран, я бы хотел, чтобы ее сообщение также было задумано. Когда пользователь выбирает Mango, сообщение Apple должно быть скрыто, сообщение Mango должно отображаться и наоборот.

  • 1
    Да, так где соответствующий код? Это всего лишь HTML, вы пытались сделать это самостоятельно в первую очередь?
  • 0
    Там вы идете .. jsfiddle.net/h8BHy
Показать ещё 3 комментария

5 ответов

3
Лучший ответ

Ты можешь сделать:

$('#fruits').change(function() {
    var fruitName = $(this).find('option:selected').data('fruit-name');
    $('.message[data-fruit-name="' + fruitName + '"]').show().siblings('.message').hide();
}).change();

Демо-версия скрипта

  • 0
    Работаю, спасибо. :)
3

Попробуйте этот код.

$('#fruits').change(function (){
  $('.message').hide();
  var fruit = $(this).find('option:selected').data('fruit-name');
  $('.message[data-fruit-name="' + fruit + '"]').show();
});

Но было бы лучше реорганизовать элементы сообщения, которые нужно идентифицировать, например:

<div class="message" id="apple">I'm Apple.</div>
<div class="message" id="mango">I'm Mango.</div>

а затем измените код на это:

$('#fruits').change(function (){
  $('.message').hide();
  var fruit = $(this).find('option:selected').data('fruit-name');
  $('#' + fruit).show();
});
1
$(function(){
    $('#fruits').change(function(){
        var display = $(this).val();
        $('.message[data-fruit-name='+display+']').show().siblings('.message').hide();
    });
});

<select name="fruits" id="fruits">
 <option value="apple" data-fruit-name="apple" selected="selected">Apple</option>
 <option value="mango" data-fruit-name="mango">Mango</option>
</select>

<div class="message" data-fruit-name="apple" style='display:none;'>I'm Apple.</div>
<div class="message" data-fruit-name="mango" style='display:none;'>I'm Mango.</div>
1
 $(".message").hide();

$("#fruits").change(function() { 
     var _this = $(this);
    $(".message").each(function() { 
        if(_this.find("option:selected").data("fruit-name") == $(this).data("fruit-name")) {
         $(".message").hide();
         $(this).show();   
        }
    }); 

}).change();

скрипка

1

Вы можете использовать val(), чтобы выбрать правильный div, показать его и использовать.siblings, чтобы скрыть другие:

JS:

$(function(){

    //Hide initially
    $("#"+$("select").val()).siblings("div").hide();

    $("select").change(function(){

        //Hide/show onChange
        $("#"+$("select").val()).show().siblings("div").hide();

    });

});

HTML:

<select>
    <option value="a" selected>a</option>
    <option value="b">b</option>
    <option value="c">c</option>
</select>

<div id="a">A</div>
<div id="b">B</div>
<div id="c">C</div>

JSFiddle

Ещё вопросы

Сообщество Overcoder
Наверх
Меню