jQuery: назовите универсальную функцию, чтобы я мог вызывать ее после события ajax - PullRequest
0 голосов
/ 04 декабря 2010

У меня есть следующий код, который устанавливает некоторые пользовательские элементы формы при загрузке страницы и затем обновляет их, если пользователь нажимает на них:

// Setup Function
$(function () {
    $('form.vote_ballot > input:checked').prev().addClass('selected');
});

// Interaction Function
$(document).ready(function() {
    $('form.vote_ballot > label').click(function() {
        $(this).siblings().removeClass("selected").end()
            .addClass("selected");
    });
    $('form.vote_ballot').change(function() {
        $('form.vote_ballot').submit();
    });
});

Это в основном позволяет пользователю даватьголосование "вверх" или "большой палец вниз".Код работает, как и ожидалось, когда пользователь редактирует существующий голос, но когда он создает новый голос, обрабатывается запрос ajax, и необходимо снова вызвать функцию начальной настройки.Функция установки должна вызываться только один раз (поэтому она находится вне блока document.ready).Часть взаимодействия в блоке document.ready отлично работает до и после события ajax.

Я не очень разбираюсь в jQuery, и мне не удалось выяснить, как использовать функцию настройки идайте ему имя, чтобы я мог вызвать его снова после события ajax.

Любая помощь?

1 Ответ

3 голосов
/ 04 декабря 2010

Этот код:

$(function () {

и этот:

$(document).ready(function() {

делают то же самое.Таким образом, вы можете обрабатывать все в одном блоке, например так:

$(function () {
    var setupFunction = function() {
      $('form.vote_ballot > input:checked').prev().addClass('selected');
    }

    // Setup Function
    setupFunction();

    // Interaction Function
    $('form.vote_ballot > label').click(function() {
        $(this).siblings().removeClass("selected").end()
            .addClass("selected");
    });
    $('form.vote_ballot').change(function() {
        $('form.vote_ballot').submit();
    });

    // example ajax call:
    $.ajax({ ...
      success: function () {
        ...
        addSelected(); // call from here for example
        ...
      }
    });
});

Как вы видите, я обернул некоторую часть кода в функцию (я назвал ее setupFunction), и я могу вызывать ее где угодно внутри $(function () { ... });блок

...