【问题标题】:Passing DOM elements into a callback function将 DOM 元素传递给回调函数
【发布时间】:2015-05-22 14:47:19
【问题描述】:

我正在尝试在回调函数中传递一个 DOM 元素,如下所示,但是回调函数外部(“成功”和“错误”)的变量输入值与回调函数内部不同。看起来某些属性在作为参数传递时被剥离,或者发生了一些多态性。

如何访问回调函数中的 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);
        }
    });
});

【问题讨论】:

  • 你想在回调中访问哪个元素?
  • 删除 input 作为回调的参数。访问外部范围内的完全没问题。
  • 哦,好的。我发誓我第一次这样做。谢谢你们。这给我们留下了一个问题,为什么变量在传递给函数时会发生变化。
  • 因为它没有通过上面声明的那个。由于您使用参数input 定义该函数,因此它正在创建一个新的本地范围级别input

标签: javascript jquery dom parse-platform jquery-callback


【解决方案1】:

当我将参数传递给回调函数(而不是让它使用外部范围变量)时,我使用绑定,这对于更改函数的“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)
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2020-02-21
    • 1970-01-01
    相关资源
    最近更新 更多