2015-05-22 50 views
0

我想在回調函數中傳遞一個DOM元素,如下所示,但回調函數('success'和'error')外部的變量輸入的值不同於在回調函數中。它看起來像某些屬性在作爲參數傳遞時被剝離或者存在一些多態性。將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); 
     } 
    }); 
}); 
+0

要訪問內回調哪些元素? – Tushar

+4

刪除'input'作爲回調參數。在外部範圍訪問一個是非常好的。 – Ryan

+0

哦,好的。我發誓我是第一次這麼做。感謝那些人。這只是給我們留下了爲什麼變量傳遞給函數時變化的問題。 –

回答

1

當我什麼將參數傳遞到一個回調函數(而不是讓它使用外部範圍變量)我使用綁定,也是有用的改變「這個」的功能的對象。

因此,這將是:

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) 
})