2013-09-21 4 views
3

Я пытаюсь получить класс выбранного параметра и использовать его в инструкции сравнения, чтобы найти именно тот класс, который он есть. Я продолжал получать неопределенное значение, даже если тег опции имеет класс, установленный для него. Может ли кто-нибудь помочь мне понять, почему я не получаю обратно ценность?Как получить значение атрибута класса с помощью jquery и javascript

Вот код я пытаюсь использовать:

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 
} 
+1

изменить 'Type' на 'типа' в Js –

+0

я сделал изменения, но проблема в том, что cs1 не определено – user2671355

+1

Что такое 'this'? – undefined

ответ

12

Вы должны изменить:

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

и в startFilter функции:

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

Обратите внимание, что в контексте startFilter функции, this является window объектом.

+0

Работал отлично, как в приведенном выше утверждении, я имел в виду неправильный объект с моим этим. Нужно убедиться, что на правый объект ссылаются. благодаря – user2671355

0

Почему бы вам не использовать hasClass JQuery API? Это очень хорошо в этом случае:

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

И убедитесь, что this referes для правильного объекта (как @undefined упоминалось)
Или используйте:

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

Или:

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

Старайтесь не иметь встроенный JavaScript

Fiddle Demo

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); 

    }); 
Смежные вопросы