jquery获取选择选项兄弟姐妹

时间:2011-08-30 18:45:40

标签: jquery arrays select option

我正在尝试获取除所选选项之外的所有选项以及与所选选项不同的类。

考虑以下示例:

<select name="country" id="country">

    <option value="1" class="option_vat" selected="selected">United Kingdom</option>
    <option value="2" class="option_no_vat">United States</option>
    <option value="3" class="option_vat">Spain</option>
    <option value="4" class="option_vat">Portugal</option>

</select>

现在,当调用change()事件时,我想获取所选选项的类和其他选项的类,这些选项与所选选项不同。 在这种情况下,唯一要添加到数组的类将是'option_no_vat',因为西班牙和葡萄牙选项在所选的一个(英国)具有相同的类。

请问有人建议解决方案吗?

3 个答案:

答案 0 :(得分:3)

http://jsfiddle.net/vKXMP/1/

$("select#country").change(function(){
    var $that, cls;
    $that = $(this);
    cls = $that.find("option:selected").attr("class"); //returns the class of the selected elements... only works when there is only one class
    console.log( $that.find("option").not("."+cls) ) //gives you back a jquery object of all the elements with a different class then the one selected
});

下次,至少尝试一下。

答案 1 :(得分:1)

你去吧

正在使用 demo

$(function(){
    $("#country").change(function(){
        var classes = [], class;
        var currentClass = $(this).find("option:selected").attr('class');
        $(this).find("option").each(function(){
            class = $(this).attr('class');
            if(class != currentClass){
                if($.inArray(class, classes) == -1){
                    classes.push(class);
                }
            }
        }); 
        alert(classes.join(","));
    }).change();
});

classes数组将包含您需要的所有唯一类。

答案 2 :(得分:1)

试试这个:

var classes;

$('#country').change(function()
{
    classes = [];

    $(this).find('option:not(:selected)')
        .not('.' + $(this).find(':selected').attr('class'))
        .each(function()
        {
            var class = $(this).attr('class');

            if ( $.inArray( class, classes ) == -1 )
                classes.push(class);
        });
});

http://jsfiddle.net/9JEyY/

注意:如果每个元素只有一个类,这只能正常工作。