我有一个多选列表,其中值按类别分组在一起
<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"));
答案 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")
答案 2 :(得分:0)
使用is method知道所选选项是否为姓氏:
alert($(element).filter(":selected").is(:last).parent("optgroup").attr("label"));