接受的答案有几个缺点:
- 不要在定位在JavaScript代码标识。使用avoid repeating your code的类和数据属性。
- 这是一种很好的做法,可以在加载时使用CSS进行隐藏,而不是使用JavaScript —来支持非JavaScript用户,并防止加载时显示 - 隐藏闪烁。
考虑到上述情况,你的选择甚至可以有不同的值,但切换同一类:
<select class="div-toggle" data-target=".my-info-1">
<option value="orange" data-show=".citrus">Orange</option>
<option value="lemon" data-show=".citrus">Lemon</option>
<option value="apple" data-show=".pome">Apple</option>
<option value="pear" data-show=".pome">Pear</option>
</select>
<div class="my-info-1">
<div class="citrus hide">Citrus is...</div>
<div class="pome hide">A pome is...</div>
</div>
的jQuery:
$(document).on('change', '.div-toggle', function() {
var target = $(this).data('target');
var show = $("option:selected", this).data('show');
$(target).children().addClass('hide');
$(show).removeClass('hide');
});
$(document).ready(function(){
$('.div-toggle').trigger('change');
});
CSS:
.hide {
display: none;
}
这里的a JSFiddle看到它在行动。
是的。如果你显示你到目前为止,你可能会得到一些帮助。更明智的做法是学习Javascript和DOM的基础知识,并学会自己编写它,而不是依靠剪切和粘贴代码。 – lonesomeday 2011-05-28 21:42:28
嗯,我真的只是在寻找一种技术。如果你阅读我的问题,我不认为我要求剪切/粘贴一段代码,只是一种方法。 – Thomas 2011-05-28 21:45:31
该方法是在'change'事件的下拉菜单上创建一个监听器,然后相应地更改每个'div'元素的'display'样式属性。 – lonesomeday 2011-05-28 21:47:21