我正在尝试在回调函数中传递DOM元素,如下所示,但回调函数外部的变量输入值('success'和'error')与回调函数内部的值不同。看起来某些属性在作为参数传递时被剥离,或者存在一些多态性。
如何访问回调函数中的DOM元素?
$(":input").change(function() {
var DataObject = Parse.Object.extend("Data");
var data = new DataObject();
data.set($(this).id, $(this).val());
var input = $(this);
data.save({
success: function(input) {
// The save was successful.
console.log(input.val());
input.addClass("has-success has-feedback");
},
error: function(input, error) {
// The save failed. Error is an instance of Parse.Error.
console.log(error);
}
});
});
答案 0 :(得分:1)
当我将参数传递给回调函数(而不是让它使用外部范围变量)时,我使用bind,也可用于更改函数的“this”对象。
所以它会是:
data.save({
success: function(__input__parameter) {
// The save was successful.
console.log(__input__parameter.val());
__input__parameter.addClass("has-success has-feedback");
}.bind(null, input),
error: function(__input__parameter, error) {
// The save failed. Error is an instance of Parse.Error.
console.log(__input__parameter, error);
}.bind(null, input)
})