Спасибо вам все впереди. Это первый раз, когда я разрабатываю плагин jQuery (и в первую очередь разрабатываю в javascript, а также на самом деле), и я должен сказать, что я довольно geeked (Вероятно, у вас много отвратительных вещей для опытных разработчиков js/jquery, но это мой первая попытка - пожалуйста, медведь со мной :). Я приветствую конструктивную критику любого из кодов.Разработка плагина jQuery - передача параметров пользовательской функции обратного вызова
Это плагин с модельным ящиком (да, есть другие, но требования к работе диктуют, что я кодирую свои собственные, чтобы избежать зависимостей сторонних разработчиков), которые отображают текст, текст из вызова ajax или форму, указанную/взятую от вызова ajax, а затем обрабатывает подачу формы через ajax. Это должно быть как можно более настраиваемым, поэтому я могу обеспечить некоторые крючки (? - анонимные функции), которые пользователь может использовать для передачи пользовательского кода в плагин.
Проблема, с которой я сталкиваюсь, - это предоставление параметров функции пользователя. Если я использую ключевое слово 'this', я могу передать переменную msg, и пользовательская функция может ее использовать. Но когда я передаю «msg» вместо «this», пользователь получает пустую переменную. Я хотел бы передать больше, чем просто msg - также массив данных, переданных в вызове ajax, и объект jQuery в поле модели - это то, что я действительно хотел бы сделать.
Ниже приведен фрагмент - функция находится внутри и вызывается внутри плагина; Я просто сгруппировал код в функции для целей организации/разработки.
// Submits the form inside of the model box
// and calls the user hooks of onFormSuccess and
// onFormFailure for ajax success and error
function submitForm() {
var URL = $('form',$contentNode).attr('action'),
method = $('form',$contentNode).attr('method'),
data = $('form',$contentNode).formSerialize();
$.ajax({
url: URL,
type: method,
data: data,
success: function(msg) {
// Doesn't work, but I would like it too
//settings.onFormSuccess.call(msg, breakData(data));
// Does work
settings.onFormSuccess.call(this);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
setings.onFormFailure.call(errorThrown);
}
});
closeModel();
}
tl dr; не могли бы вы привести более короткий пример? – Greg
только, извините, что –