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需要找出,类的选择.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();
        }

谢谢大家的任何建议。

4

2 回答 2

2

Backbone 提供了一个事件作为此类任务的第一个参数:

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

currentTarget此事件的属性是您正在寻找的元素。

于 2013-08-21T18:02:53.663 回答
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;
    }
}
于 2013-08-21T18:03:38.720 回答