如何按班级选择选项?

时间:2011-06-21 13:40:07

标签: javascript jquery select option

我尝试使用$('.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>

4 个答案:

答案 0 :(得分:1)

您可以将disabled属性添加到您不想使用的选项中:

http://jsfiddle.net/sadmicrowave/Fnvqb/

答案 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插件,但我没有那么远......