【发布时间】:2017-05-28 13:18:40
【问题描述】:
如果该类只有 1 个元素 (<tr>),则以下 jQuery 代码仅显示选定的选项,但如果该类有多个元素,则所有元素都被隐藏。需要改变什么?
$(document).ready(function() {
$("#genre").change(function() {
var id = $(this).find("option:selected").attr("id");
switch (id) {
case "opt_all":
$("tr").show();
break;
case "opt_family":
$(".family").show().siblings().hide();
break;
case "opt_life":
$(".lifestyle").show().siblings().hide();
break;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name='genre' id='genre'>
<option id='opt_all' selected='selected'>All Genre</option>
<option id='opt_family'>Family & Friends</option>
<option id='opt_life'>Lifestyle</option>
</select>
<table>
<tr class="family"></tr>
<tr class="life"></tr>
<tr class="family"></tr>
</table>
【问题讨论】:
-
因为
siblings()在没有兄弟元素的情况下调用时会选择任何兄弟元素,即使是原始选择器中的元素(siblings()不知道)。例如,您可能希望删除任何类似.siblings(':not(.lifestyle)')的内容。或者反转它并先隐藏,然后显示。这可能更容易。 -
感谢您的建议!添加 ':not(.__)' 有效!你让我今天一整天都感觉很好。 @Jared Farrish
标签: jquery select switch-statement