7

我正在尝试获取所选选项的类,并在比较语句中使用它来查找它是哪个类。

我得到一个未定义的值。选项标签设置了一个类。

为什么我没有得到回报?

html:

<select name="datagrid_filter" onchange="startFilter();">
    <option>All</option>
    <option disabled="true">Assignment:</option>
    <option disabled="true">Client:</option>
    <option disabled="true">Type:</option>
    <option class="type" value="Activity"> &nbsp Activity</option>
    <option class="type" value="Alert"> &nbsp Alert</option>
    <option class="type" value="Lead"> &nbsp Lead</option>
    <option class="type" value="Notification"> &nbsp Notification</option>
</select>

Javascript:

var cs1 = $("option:selected", this).attr("class");
if(cs1 == 'Type'){
    //do something
}
4

4 回答 4

18

你应该改变:

onchange="startFilter();"onchange="startFilter(this);"

startFilter函数中:

function startFilter(ele){
    var className = $("option:selected", ele).attr("class");
    if(className == 'type'){
        //do something
    }
}

请注意,this内部startFilter函数指的是window对象,而不是您绑定到的元素。

于 2013-09-21T14:40:12.037 回答
1

为什么不使用hasClassjQuery API?在这种情况下非常好:

if($("option:selected", this).hasClass('type')){
    //do something
}

并确保this引用正确的对象(如@undefined 所述)
或使用:

if($("option:selected", "select[name=datagrid_filter]").hasClass('type')){
        //do something
    }

或者:

if($("select[name=datagrid_filter] option:selected").hasClass('type')){
            //do something
 }
于 2013-09-21T14:35:48.480 回答
0

尽量不要使用内联 JavaScript

小提琴演示

JavaScript

   $(function()
    {
        var handleChange    =   function()
                                {
                                    var $this     = $(this);
                                    var $selected = $this.children(":selected");
                                    var isType    = $selected.hasClass('type');
                                    if(isType)
                                    {
                                        alert('Do Something');                        
                                    }
                                };
        var $datagridFilter =  $('[name=datagrid_filter]')

        $datagridFilter.change(handleChange);

    });
于 2013-09-21T14:46:02.280 回答
0
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select onchange="getval(this);" class="sele">
   <option>All</option>
    <option disabled="true">Assignment:</option>
    <option disabled="true">Client:</option>
    <option disabled="true">Type:</option>
    <option class="type" value="Activity"> &nbsp Activity</option>
    <option class="type" value="Alert"> &nbsp Alert</option>
    <option class="type" value="Lead"> &nbsp Lead</option>
    <option class="type" value="Notification"> &nbsp Notification</option>
</select>
<script>
 function getval(sel)
{

    if($('.sele :selected').attr('class'))
    {
      console.log($('.sele :selected').attr("class","typ123"));
          // Your code write here
    }

}
</script>
于 2018-12-19T05:36:08.470 回答