jQuery Plugin Development - przekazywanie parametrów do zdefiniowanej przez użytkownika funkcji zwrotnej

Dziękuję wszystkim z wyprzedzeniem. To jest mój pierwszy raz, kiedy tworzę wtyczkę jQuery (i po raz pierwszy również rozwijam ją w javascript), i muszę powiedzieć, że jestem bardzo fajny (prawdopodobnie ma wiele okropnych rzeczy dla ciebie doświadczonych programistów js / jquery, ale to jest mój pierwsza próba - proszę ze mną znieść :). Z zadowoleniem przyjmuję również każdą konstruktywną krytykę któregokolwiek z kodeksów.

Jest to wtyczka modelu box (tak, są inne, ale wymagania dotyczące pracy nakazują, że koduję własne, aby uniknąć zależności od stron trzecich), która wyświetla podany tekst, tekst z wywołania ajax lub formularz podany / odebrany z wywołania ajax a następnie obsługuje wysyłanie formularzy za pośrednictwem ajax. Musi to być tak konfigurowalne, jak to możliwe, więc staram się udostępnić kilka haczyków (funkcji anonimowych), których użytkownik może użyć, aby przekazać niestandardowy kod do wtyczki.

Problem, jaki mam, to dostarczanie parametrów funkcji użytkownika. Jeśli użyję słowa kluczowego „this”, mogę przekazać zmienną „msg”, a funkcja użytkownika może z niej korzystać. Ale kiedy przekazuję 'msg' zamiast 'this', użytkownik otrzymuje pustą zmienną. Chciałbym przekazać więcej niż tylko msg - również tablicę danych przekazanych w wywołaniu ajax i obiekt jQuery w polu modelu jest to, co naprawdę chciałbym zrobić.

Poniżej znajduje się fragment kodu - funkcja jest wewnątrz i wywoływana w wtyczce; Właśnie pogrupowałem jakiś kod w funkcje do celów organizacji / rozwoju.

    // 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();
    }

questionAnswers(1)

yourAnswerToTheQuestion