2013-08-21 4 views
0

Мне нужно выяснить, на каком элементе с определенным классом был вызван обратный вызов jquery. Например, если у меня есть этот JQuery:

$('#content').delegate('.role', 'change', function(e){ 
    if($(this).val() == 'Student'){ 
     $('.roleStudent').show(); 
     $('.roleTeacher').hide(); 
    }else if($(this).val() == 'Teacher'){ 
     $('.roleTeacher').show(); 
     $('.roleStudent').hide(); 
    }else if($(this).val() == 'User'){ 
     $('.roleTeacher').hide(); 
     $('.roleStudent').hide(); 
    } 
    }); 

, и мне нужно, чтобы создать из него магистрали событий. Он должен выглядеть какой-то вроде этого:

events: { 
    'change .role' : changeRole 
} 

и внутри changeRole functioin необходимость выяснить, какие выбрать с классом .role было изменения, так что я могу построить свое выступление так:

 if($(this).val() == 'Student'){ 
      $('.roleStudent').show(); 
      $('.roleTeacher').hide(); 
     }else if($(this).val() == 'Teacher'){ 
      $('.roleTeacher').show(); 
      $('.roleStudent').hide(); 
     }else if($(this).val() == 'User'){ 
      $('.roleTeacher').hide(); 
      $('.roleStudent').hide(); 
     } 

благодарственное вы все за любые советы.

ответ

2

Backbone обеспечивает событие в качестве первого аргумента для такого рода задачи:

changeRole : function (e) { 
    var value = e.currentTarget.value; 
} 

И currentTarget свойства этого события элемента Вы искали.

+0

Отлично, это прекрасно работает !! Спасибо –

1

попробовать что-то вроде этого:

changeRole: function(event){ 
    var val = this.$(event.currentTarget).val(); 
    switch(val){ 
     case 'Student': 
      $('.roleStudent').show(); 
      $('.roleTeacher').hide(); 
      break; 
     case 'Teacher': 
      $('.roleTeacher').show(); 
      $('.roleStudent').hide(); 
      break; 
     case 'User': 
      $('.roleTeacher').hide(); 
      $('.roleStudent').hide(); 
      break; 
    } 
} 
+0

Спасибо за помощь, но Виталий был первым)) –

+1

рад, что смогу помочь –