当将更改事件绑定到类元素时,需要应用索引来发现生成更改事件的类元素,例如[0]
。
var taskData = new Array;
$($( ".ctaskSelector" )[0]).bind('change', function () {
var val = $(".ctaskSelector").val();
var task_ID = taskData[val].task_ID;
etc
});
一种解决方案是复制每个类索引的代码。有没有更明智的方法来解决这个问题?
答案 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);
});