我尝试使用$('.className').show();
和$('.className').hide();
,但它似乎不适用于IE
。是否有另一种方法可以在下拉列表中按类分组选项?我找到this question,但答案是寻找值“a”或“c”。
//if 2 is selected remove C
case 2 : $('#theOptions2').find('option:contains(c)').remove();break;
//if 3 is selected remove A
case 3 : $('#theOptions2').find('option:contains(a)').remove();break;
我如何寻找实际的课程?
修改
<select id="theOptions2">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
答案 0 :(得分:1)
您可以将disabled
属性添加到您不想使用的选项中:
答案 1 :(得分:1)
我以前从未见过有人试图在选项元素上调用hide / show,我想IE只是不允许你这样做。选择可能很匹配,但IE并没有隐藏元素。删除的选择与调用show hide ...
的选择相同$('.className').remove();
或
$('option.className').remove();
或
$('#theSelect option.className').remove();
答案 2 :(得分:0)
$('select[class~="cactus"]')
$('option[class~="cactus"]')
javascript:(function(){
var out = "hi\n";
out += $('*[class~="cactus"]').html2string() ;
alert( out );
})()
供将来参考,而不是用文字描述html ... show actual html
答案 3 :(得分:0)
这个演示代码显示了如何实现选项过滤的一种方式...它需要修改以确定哪些候选项被删除,因为我只是为了演示而硬编码,但它显示了你需要考虑的内容 - 当你删除了这些项目,你需要考虑它们被添加回来的顺序。绕过此问题的最简单方法是保留原始列表的副本,然后在未过滤时,删除剩余的项目,将其替换为原来的项目 - 否则您必须担心保留排序数据。
所以这是我的下拉定义:
<select id="mySelector">
<option class="group1">Item 1</option>
<option class="group2">Item 2</option>
<option class="group1">Item 3</option>
<option class="group2">Item 4</option>
<option class="group1">Item 5</option>
</select>
<input type="button" id="removeItems" value="Remove candidate items" />
<input type="button" id="addItems" value="Add them back" />
过滤/恢复项目的jquery:
$(function () {
var originalOptionData;
$("#removeItems").bind('click', function () {
/* store original copy for rollback */
originalOptionData = $("#mySelector option");
$("#mySelector option.group2").remove();
});
$("#addItems").bind('click', function () {
var selector = $("#mySelector");
selector.children().remove();
selector.append(originalOptionData);
});
});
我可以相对简单地将其转换为select过滤器jquery插件,但我没有那么远......