获得$(this)的选择选项

时间:2012-12-17 18:28:57

标签: javascript jquery

如果我循环浏览一些select下拉列表的jquery对象,如何使用jquery的$(this)来获取所选选项的类?

elems.each(function(idx, elem) {
    if ($(this).is('select')){
        console.log($(this, "option:selected"))
    }
});

似乎不起作用。

4 个答案:

答案 0 :(得分:5)

​elems.each(function(idx, elem) {
    var ref = $(this); // caching $(this)
    if( ref.is('select') ) {
        console.log( ref.find('option:selected') );

        // OR in jQuery Context format
        console.log( $('option:selected', ref) ); // this format internally 
                                                  // called .find() method

        // to get the class
        console.log( ref.find('option:selected').attr('class') );
    }
})​;

答案 1 :(得分:3)

除了您传递参数的顺序不正确之外,您几乎就在那里。见下文,

elems.each(function(idx, elem) {
    if ($(elem).is('select')){
        console.log($("option:selected", elem));
    }
});

$("option:selected", this),其中第一个参数是选择器,第二个参数是上下文。

注意: .each第二个参数是元素本身,因此您可以使用elem代替this

DEMO: http://jsfiddle.net/MUC6H/1/

答案 2 :(得分:2)

  

如何获取所选选项的类

if ($(this).is('select')){
        console.log($(this).find("option:selected").attr("class"));
    }

http://jsfiddle.net/DWEY4/

答案 3 :(得分:-1)

您是否尝试过hasClass功能?

elems.each(function(idx, elem) {
    if ($(this).hasClass('select')){
        console.log($(this, "option:selected"))
    }
});

进一步观察,我认为如果添加.类标识符,原始方法也会起作用

elems.each(function(idx, elem) {
    if ($(this).is('.select')){
        console.log($(this, "option:selected"))
    }
});