jquery获取数组的选择选项

时间:2010-07-29 18:56:45

标签: jquery arrays select option

我有点坚持一个 - 大概很难解决问题。

我想创建将用于网站上所有选定元素的代码。

根据分配给“选项”的“标签”属性,我想隐藏所有其他“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”参数值匹配的类的元素。

我希望这是有道理的。

知道如何实现这个目标吗?

非常感谢。

2 个答案:

答案 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();
    }
  });