【问题标题】:jquery get select options to arrayjquery获取数组的选择选项
【发布时间】:2011-03-22 21:56:33
【问题描述】:

我有点卡住了 - 大概很容易解决问题。

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

根据分配给“选项”的“标签”属性,我想隐藏所有其他“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(其中类名将从这个选择元素的所有选项)应该隐藏()并且只选择显示()。

我不太确定如何将特定“选择”元素的所有“选项”元素放入数组中。 然后大概我可以使用 each() 语句循环遍历它并找出它们是否具有“标签”,如果有,则隐藏具有与其值匹配的类的元素。

然后在循环之后,我可以显示与所选“选项”的“标签”参数值匹配的类的元素。

我希望这是有道理的。

知道如何实现吗?

非常感谢。

【问题讨论】:

    标签: jquery arrays select option


    【解决方案1】:

    为所有与特定选择相关的 div 指定一个类,该类是该元素的名称。那么您可以执行以下操作:

    $('.sel_depend').change(function(){
        var class = $(this).attr('name');
        $('.' + class).hide();
        var divToShowClass = $(this).find(':selected').attr('label');
        $('.' + divtoShowClass).show();
    
    });
    

    【讨论】:

    • 很高兴我能帮上忙!如果您不介意,请将其标记为答案,这样问题就不会出现在未回答列表中:)
    • 当然 - 没问题 - 将其标记为已回答的按钮在哪里?
    • 答案旁边应该有一个复选标记。点击它:)
    【解决方案2】:
      $('.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();
        }
      });
    

    【讨论】:

    • 我试过这个 - 但是,因为并非所有选项都分配了标签(只有那些需要额外文本字段的选项),所以在初始 show() 之后选择不同的字段时,它们不会关闭字段.
    • 选择不带label属性的选项时是否隐藏所有的div?
    • 引用此特定菜单的所有 div - 是的。
    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 2011-12-14
    • 2012-09-26
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2012-01-28
    相关资源
    最近更新 更多