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 に答える