1

如果我正在遍历一些作为select下拉列表的 jquery 对象,如何使用 jquery 获取所选选项的类$(this)

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

似乎不起作用。

4

4 回答 4

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') );
    }
})​;
于 2012-12-17T18:36:59.007 回答
3

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

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

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

注意:第二.each个参数是元素本身,所以你可以使用elem而不是this

演示:http: //jsfiddle.net/MUC6H/1/

于 2012-12-17T18:35:28.187 回答
2

如何获得所选选项的类

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

http://jsfiddle.net/DWEY4/

于 2012-12-17T18:31:18.137 回答
-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"))
    }
});
于 2012-12-17T18:31:56.067 回答