Я не могу понять, почему я не могу проверить метод.change() объекта jquery, хранящегося в переменной. Является ли это синтаксической ошибкой? Я потерял контекст?
Вот мой код:
var MyObj = {
//declaration
reference : $('#reference'),
observeReference : function() {
//The following line is not tracking the .change() method.
//Not sure why... And I didn't any get console error!
this.reference.change(function() {
var opt = $('#reference option:selected').text();
if (opt === 'other' || opt === 'reference') {
$('#input_other').fadeIn();
} else{
$('#input_other').fadeOut();
$('#input_other_bx').val('');
};
}.bind(this));
},
init: function() {
this.observeReference();
}
};
$(document).ready(function() {
MyObj.init();
});
Если $('#reference')
выполняется до готовности документа, он получит объект jquery, length = 0
которого length = 0
.
init будет выполняться после готовности документа, поэтому назначьте ссылку в методе init.
var MyObj = {
//declaration
reference : null,
...
init: function() {
this.reference = $('#reference');
this.observeReference();
}
id="reference"
не существует, когда вашMyObj
объявлен. Также нет смысла спрашивать нас "это синтаксическая ошибка" ; Вы можете просто проверить консоль инструментов разработчика.init
должна решить проблему.