考虑注册onchange回调的示例:
function appendToSaveArray(field)
{
saveArray[field.attr("id")] = field.attr("value");
}
$('#fields input').change(appendToSaveArray);
这个想法是将对几个文本输入的最后一次更改存储在一个数组中。当我更改其中一个输入的值(然后将焦点切换到文档的另一个元素)时,就会调用函数appendToSaveArray
。但是,参数field
不包含触发更改的输入元素,这是我所期望的。如何从函数appendToSaveArray
中找出触发事件的输入?
在change
事件处理程序中,this
是指为其触发事件的输入。您可以直接使用this.value
:获取其值
function appendToSaveArray()
{
saveArray[this.id] = this.value;
}
$('#fields input').change(appendToSaveArray);
演示。
field
等于事件,它还存储事件目标,即更改的元素:
function appendToSaveArray(field) {
saveArray[field.target.id] = field.target.value;
}
$('#fields input').on('change', appendToSaveArray);
FIDDLE
field
在您的代码中包含事件对象。在函数中,请改用$(this)
。
另外请注意,您可以将此代码简化为带有匿名函数的一行代码:
$('#fields input').click(function () { saveArray[$(this).attr('id')] = $(this).val(); });