簡體   English   中英

顯示/隱藏div選擇多個

[英]Show/hide div select multiple

我有以下代碼: http : //jsfiddle.net/tucuta/pvvmvdpg/

 $("#mySelect").change(function(){ $("#div1").fadeIn("fast")[ ($(this).val() == 'value1') ? 'show' : 'hide' ](); $("#div2").fadeIn("fast")[ ($(this).val() == 'value2') ? 'show' : 'hide' ](); }); $("#mySelect").change(); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id="mySelect" multiple="multiple"> <option value="value1">First</option> <option value="value2">Second</option> <option value="value3">Third</option> <option value="value4">Fourth</option> </select> <div id="div1">Div 1</div> <div id="div2">Div 2</div> 

如果用於普通選擇,則該代碼運行良好,但是對於多個選擇,則該代碼不起作用。

例如,如果我選擇先顯示div 1,但先選擇然后顯示第二,它既不會顯示div1也不會顯示div2。

有人請幫我,我先謝謝你

通過$.inArray()檢查您要查找的值是否在列表中的任何位置

 $("#mySelect").change(function(){ $("#div1").fadeIn("fast")[ $.inArray('value1', $(this).val()) >= 0 ? 'show' : 'hide' ](); $("#div2").fadeIn("fast")[ $.inArray('value2', $(this).val()) >= 0 ? 'show' : 'hide' ](); }); $("#mySelect").change(); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id="mySelect" multiple="multiple"> <option value="value1">First</option> <option value="value2">Second</option> <option value="value3">Third</option> <option value="value4">Fourth</option> </select> <div id="div1">Div 1</div> <div id="div2">Div 2</div> 

只需刪除此行

$("#mySelect").change();

它將起作用,因為您已在'#myselect'上使用了change事件,並且它將自動觸發,因此您無需調用它。

采用

$.inArray(value, array) // Return the index in array or -1 if not exists
if( $.inArray('value1', $(this).val()) != -1 ) { ... }

我增加了幾行。 它的工作代碼擺弄

的HTML

<select id="mySelect" multiple="multiple">
  <option value="value1">First</option>
  <option value="value2">Second</option>
  <option value="value3">Third</option>
  <option value="value4">Fourth</option>
</select>
<div id="div1" class="a">Div 1</div>
<div id="div2" class="a">Div 2</div>
<div id="div3" class="a">Div 3</div>
<div id="div4" class="a">Div 4</div>

腳本

$(document).ready(function() {
    $("#mySelect").change(function(){
        $(".a").hide();                              
        if( $(this).val()){
            for(var i=0; i < $(this).val().length; i++){
                if($(this).val()[i] == "value1"){
                        $("#div1").fadeIn("fast")['show']();
                }
                else if($(this).val()[i] == "value2"){
                        $("#div2").fadeIn("fast")['show']();
                }
                 else if($(this).val()[i] == "value3"){
                        $("#div3").fadeIn("fast")['show']();
                }
                 else if($(this).val()[i] == "value4"){
                        $("#div4").fadeIn("fast")['show']();
                }
            }
        }
    });
    $("#mySelect").change();
});

一種可能的解決方案可能是:

HTML

<select id="mySelect" multiple="multiple">
  <option value="value1">First</option>
  <option value="value2">Second</option>
  <option value="value3">Third</option>
  <option value="value4">Fourth</option>
</select>
<div id="div1" match="value1">Div 1</div>
<div id="div2" match="value2">Div 2</div>
<div id="div3" match="value3">Div 3</div>
<div id="div4" match="value4">Div 4</div>

CSS

div{
    display:none;
}

jQuery的

$(document).ready(function() {
    function exists(elemt,arr){
        return (jQuery.inArray(elemt,arr) > -1);
    }

    $('#mySelect').change(function(){
        var $selected = $(this).val();
        $('div').each(function(){
                $(this).fadeIn('fast')[ 
                    (exists($(this).attr('match'),$selected)) ? 'show' : 'hide' ]();      
        });
    });
});

檢查此鏈接jsfiddle以查看工作示例。

希望它有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM