2 回答
TA贡献1805条经验 获得超10个赞
<select>您可以设置using的初始值val(),并在设置后触发更改事件,这将依次运行更改处理程序。
我还简化了更改处理程序逻辑,因为您可以使用选择本身的值,而无需循环遍历<option>元素
$('select#location').change(function() {
$('.box').hide().filter('.' + this.value).show();
// set the value and trigger change on page load
}).val('A').change()
.box {
display: none
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<select id="location">
<option value="">Select Location</option>
<option value="A">Location A</option>
<option value="B">Location B</option>
<option value="C">Location C</option>
</select>
</div>
<div class="box A">Box A</div>
<div class="box B">Box B</div>
<div class="box C">Box C</div>
TA贡献1843条经验 获得超7个赞
如果您要从列表中预先选择一个选项,这似乎与首先选择“选择位置”选项相反(从用户体验的角度来看)。
话说回来:
将属性添加selected到默认情况下应选择的属性option,然后手动调用执行更新的函数。另请注意,option不应被视为有效选项,例如“选择位置”应显式将其value属性设置为"",否则其value隐式成为 的文本内容option。
请参阅下面内嵌的 JavaScript 注释。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<select>
<option value="">Select Location</option>
<option value="A" selected>Location A</option>
<option value="B">Location B</option>
<option value="C">Location C</option>
</select>
</div>
<div class="A">
<?php
// tide table for location A
?>
</div>
<div class="B">
<?php
// tide table for location B
?>
</div>
<div class="C">
<?php
// tide table for location C
?>
</div>
<script>
$(document).ready(function(){
// Instead of an anonymous function, use a
// function declaration so the function can
// be called explicitly when needed.
function update(){
$(this).find("option:selected").each(function(){
var optionValue = $(this).attr("value");
if(optionValue){
$(".box").not("." + optionValue).hide();
$("." + optionValue).show();
} else{
$(".box").hide();
}
});
}
$("select").change(update).change();
update(); // Update as soon as the page loads.
});
</script>
- 2 回答
- 0 关注
- 163 浏览
添加回答
举报