获取父元素,其中多个子元素在select输入中具有相同的值

时间:2014-04-17 10:38:10

标签: javascript jquery multi-select

我有一个多选列表,其中值按类别分组在一起

    <select class="multiselect" multiple="multiple">
        <optgroup label="IsStudent">
            <option value="y">Yes</option>
            <option value="n">No</option>
        </optgroup>
        <optgroup label="IsOffer">
            <option value="y">Yes</option>
            <option value="n">No</option>
        </optgroup>
    </select>

我正在使用http://davidstutz.github.io/bootstrap-multiselect/。我试图找到我选择的选项元素的父级。我是这样做的:

  onChange: function (element, checked) {
            if (checked == true) {
              alert($(element).filter(":selected").parent("optgroup").attr("label"));               
            }
        }

如果选择了我的任何选项,它会提醒&#34; IsStudent&#34;即使我选择&#34; IsOffer&#34;下的选项。如果我将值更改为唯一,则警报会提醒正确的父级。

无论我的值是否重复,都可以检测到所选元素。我希望当父级optgroup不同时,它会将其视为唯一的。 我试过了

alert($(element).filter(":selected:last").parent("optgroup").attr("label")); 

3 个答案:

答案 0 :(得分:1)

$("select").find("option:selected").last().closest("optgroup").attr("label")

this fiddle上进行测试。

如果你想接受这个解决方案,请考虑接受sudhar的解决方案,因为他是第一个解决主要问题的人(他当然应该添加last()方法调用)。

修改: op实际上想要报告最近选择的项目。这个可以解决问题:

$("select").click( function(eve) {
    alert($(eve.target).closest("optgroup").attr("label"));
});

this fiddle上进行测试

答案 1 :(得分:0)

$("select").find("option:selected").closest("optgroup").attr("label")

Fiddle

答案 2 :(得分:0)

使用is method知道所选选项是否为姓氏:

alert($(element).filter(":selected").is(:last).parent("optgroup").attr("label"));