[英]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.