1

当将更改事件绑定到类元素时,需要应用索引来发现哪个类元素产生了更改事件,例如[0]这里。

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

一种解决方案是为每个类索引复制代码。有没有更明智的方法来解决这个问题?

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 回答