我有点坚持一个 - 大概很难解决问题。
我想创建将用于网站上所有选定元素的代码。
根据分配给“选项”的“标签”属性,我想隐藏所有其他“div”元素,这些元素的类与此特定“选择”菜单中“选项”的其他“标签”值相同。
让我演示一下:
<select class="sel_depend" id="reg_where_heard" name="where_heard">
<option value="">Select one…</option>
<option value="1">Google</option>
<option value="2">Yahoo</option>
<option value="3" label="where_heard_magazine">Magazine</option>
<option value="4" label="where_heard_other">Other</option>
</select>
<div class="where_heard_magazine dn"><input type="text" name="magazine" id="magazine" value="" /></div>
<div class="where_heard_other dn"><input type="text" name="other" id="other" value="" /></div>
现在 - 菜单下div中的“dn”类只分配了“display:none”。
取决于所选的选项 - 如果它的值是3 - 我希望div与类显示相同的类 - 然后如果我选择值为4的选项 - 所有其他div(其中类名将填充自这个select元素的所有选项都应该hide()并且只选择show()。
我不太确定如何将特定“select”元素的所有“option”元素放到数组中。 然后大概我可以使用each()语句遍历它并找出它们是否具有“label”,如果是这样的话 - 用与其值匹配的类隐藏元素。
然后在循环之后,我可以显示具有与所选“选项”的“label”参数值匹配的类的元素。
我希望这是有道理的。
知道如何实现这个目标吗?
非常感谢。
答案 0 :(得分:2)
给出与特定选择相关的所有div,该类是该元素的名称。然后你可以做类似的事情:
$('.sel_depend').change(function(){
var class = $(this).attr('name');
$('.' + class).hide();
var divToShowClass = $(this).find(':selected').attr('label');
$('.' + divtoShowClass).show();
});
答案 1 :(得分:0)
$('.sel_depend').change(function() {
var optionWithLabels = $('.sel_depend').children("option[label]");
if($("option:selected", this).attr('label')) {
optionWithLabels.each(function(){
$('.' + $(this).attr('label')).hide();
});
$('.' + $("option:selected", this).attr('label')).show();
}
});