jQuery将更改事件绑定到所有类元素

时间:2018-04-09 14:36:40

标签: jquery class event-binding

当将更改事件绑定到类元素时,需要应用索引来发现生成更改事件的类元素,例如[0]

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

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

2 个答案:

答案 0 :(得分: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() long 之前已被弃用。您应该使用on()代替。

答案 1 :(得分:2)

如果您想要访问引发活动的元素,可以使用$(this)或拥有event属性并使用event.target

$(".ctaskSelector").on('change', function(e){
   var element = $(this); 
   //or
   var element = $(e.target);
});