Я строю простой скрипт. Я пытаюсь не использовать анонимные функции в jQuery, чтобы поддерживать чистый код. Это код:TypeError: не является функцией
jQuery(function($) {
'use strict';
var Call = {
selection: '',
init: function() {
this.product_opt = $('#product_opt');
this.listenChange();
//this.test();
},
listenChange: function() {
this.product_opt.live('change', this.afterChange);
},
afterChange: function() {
$("#product_opt :checked").each(function() {
this.selection = $(this).attr('value');
console.log(this.selection);
this.ajax_get_cat();
});
},
ajax_get_cat : function(){
return $.ajax({
url: 'http://localhost:8888/mydomain/wp-admin/admin-ajax.php',
data: {
'action': 'show_slider_callback',
'selection': this.selection
},
success: function(data) {
// This outputs the result of the ajax request
//console.log(data);
console.log('returned' + data);
},
error: function(errorThrown) {
console.log(errorThrown);
}
});
}
};
Call.init();
});
И это HTML:
<div id="product_opt">
<input id="1" class="selector" type="radio" name="group1" value="6" />
<input id="1" class="selector" type="radio" name="group1" value="6" /> </div>
Когда я пытаюсь использовать форму это сообщение об ошибке возвращается в консоли:
TypeError: this.ajax_get_cat is not a function this.ajax_get_cat();
«Я пытаюсь не использовать анонимные функции в jQuery, чтобы manitain очистить код» нечетное утверждение, учитывая, что 1) нет ничего плохого в анонимных функциях, и они, конечно же, не «нечисты» и 2) у вас их много в коде. Также обратите внимание, что в конце вопроса отсутствует ошибка. –
проблема 'this', вам нужно поддерживать область и контексты. – Jai
Спасибо. Как я могу обладать сферой «этого»? Большое спасибо за быстрый ответ. –