1

変更イベントをクラス要素にバインドする場合、たとえば[0]ここで変更イベントを生成したクラス要素を検出するために、インデックスを適用する必要があります。

var taskData = new Array;
$($( ".ctaskSelector" )[0]).bind('change', function () {
    var val = $(".ctaskSelector").val();
    var task_ID = taskData[val].task_ID;
    etc
});

1 つの解決策は、クラス インデックスごとにコードを複製することです。これにアプローチするより賢明な方法はありますか?

4

2 に答える 2

3

関数のスコープはイベントを発生させた要素であるため、必要なものを達成するためのより賢明な方法はthis、イベントハンドラー内でキーワードを使用することです。

var taskData = [];
// I presume you have some logic here to populate the taskData array...

$('.ctaskSelector').on('change', function () {
    var val = $(this).val();
    var task_ID = taskData[val].task_ID;
    // etc
});

また、ずっとbind()に廃止されたことに注意してください。代わりに使用する必要があります。on()

于 2018-04-09T14:39:11.763 に答える
2

イベントを発生させた要素にアクセスする場合は、属性を使用する$(this)か、event属性を指定して を使用できますevent.target

$(".ctaskSelector").on('change', function(e){
   var element = $(this); 
   //or
   var element = $(e.target);
});
于 2018-04-09T14:40:13.370 に答える