書き方が悪いのだと思いますが、こういう場合の対処法を教えてください。
var PrefArea = function() {
this.pref_list = $("#pref_list");
this.select_pref_id = '';
this.hoge = function() {
this.pref_list.find("input").each(function(){
// (略)
this.select_pref_id = this.id; ← プロパティselect_pref_idにアクセスできない(1)
});
}
this.fuga = funciton (data) {
// (略)
this.pref_list.append(pref); ← プロパティpref_listにアクセスできない(2)
}
}
pref_area = new PrefArea();
$.ajax({
type:'get',
url:url,
success: function(data) {
pref_area.fuga(data);
}
});
(1)はeachループの中だとアクセスできないというのが原因と考えています
(2)はajaxでコールバック関数っぽく呼んでるのが原因と考えています。
よろしくお願いします。
each の関数の中では、this はイテレートされているオブジェクトを指しています。
二番目のは、質問に書かれている範囲だと this で自身にアクセスできているような気もしますが、こんな感じでしょうか。
var PrefArea = function() { ... var self = this; // おまじない this.hoge = function() { self.pref_list.find("input").each(function(){ // (略) self.select_pref_id = this.id; // self を通じて自身にアクセスする }); }; this.fuga = function (data) { // (略) self.pref_list.append(pref); // self を通じて自身にアクセスする }; };