如何在backbone.js事件中获得$(this)

时间:2013-08-21 17:53:57

标签: jquery backbone.js

我需要找出触发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();
        }

谢谢大家的任何建议。

2 个答案:

答案 0 :(得分:2)

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

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

此事件的currentTarget属性是您要查找的元素。

答案 1 :(得分: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;
    }
}