У меня есть скелет модуля, который добавляет запись в базу данных нажатием кнопки.
var Person = (function () {
var ajaxOpts = {
type: "POST",
url: "",
contentType: "application/json",
dataType: "json",
success: function () { },
error: function () { },
data: {}
}
function insert(data) {
ajaxOpts.url = "../Service.asmx/InsertPerson";
ajaxOpts.data = JSON.stringify(data);
ajaxOpts.error = function (xhr) {
console.log(xhr.status);
};
ajaxOpts.success = function (data) {
console.log('record successfully added');
console.log(data.d);
}
$.ajax(ajaxOpts);
};
return {
insert: insert
}
} ());
и я называю это с моей веб-страницы, как:
$(document).ready(function () {
$('#btnSubmit').click(function () {
var data = {
personId: $('#personId').val(),
firstName: $('#firstName').val(),
lastName: $('#lastName').val()
};
Person.insert(data);
});
});
Как я могу изменить этот код, чтобы убедиться, что $
является объектом jQuery, а не другой библиотекой?
Для плагинов вы обычно обертываете код в формате IIFE и сопоставляете jQuery
с $
. Вы можете сделать то же самое для своего модуля (у вас уже есть IIFE):
var Person = (function($) {
// ...
}(jQuery));
Для обратных вызовов document.ready
обратного вызова передается ссылка на jQuery:
jQuery(document).ready(function($) {
// ...
});
Просто убедитесь, что вы используете jQuery
вне функций.
jQuery
качестве аргумента функции и называете параметр $
. Поэтому любое использование $
внутри функции относится к параметру, а не к глобальному $
. Это то, что вы хотели знать?
Как насчет замены кода на главной странице следующим образом:
(function($) {
$('#btnSubmit').click(function () {
var data = {
personId: $('#personId').val(),
firstName: $('#firstName').val(),
lastName: $('#lastName').val()
};
Person.insert(data);
});
}(jQuery));