jQuery размещение функций .each () внутри функции .click ()

0

Функции .each() внутри .click() не работают. Я не знаю, как их структурировать, чтобы синтаксически корректно, поэтому jQuery будет распознавать и запускать их.

Я пробовал их использовать до закрытия }); но я либо не делал этого правильно, либо это не так. Я попробовал Googling, но кроме моего названия темы, я был в недоумении, что искать. Я попытался использовать функцию jquery внутри функции, но это оказалось потерянной причиной.

EDIT: Мне удалось получить первый, чтобы он выстрелил должным образом (//POST specials), однако второй все еще не работает. Я даже пытался установить extras POST внутри .ajax() из specials И это не сработало.

$('.class').find('#button').click(function() {

        //all kinds of variables here

        var dataString = {//variables:variables}
        console.log(dataString);

        $.ajax({
            type: "POST",
            url: "classes/reserve.php",
            data: dataString,
            cache: false,
            success: function(html)
            {
                //POST specials
                $('#specialscheck input:checked').each(function() {
                    var reservation = $('#reservation').val();
                    var special = parseInt($(this).attr('id'));
                    dataString = {reservation:reservation, special:special};
                    console.log(dataString);
                    $.ajax({
                        type: "POST",
                        url: "classes/insert_specials.php",
                        data: dataString,
                        cache: false,
                        success: function(html)
                        {
                            //$('.unitinfolist').html(html);
                        }
                    }); 
                });

                //POST extras
                $('#extrascheck input:checked').each(function() {
                    var reservation = $('#reservation').val();
                    var extra = parseInt($(this).attr('id'));
                    dataString = {reservation:reservation, extra:extra};
                    console.log(dataString);
                    $.ajax({
                        type: "POST",
                        url: "classes/insert_extras.php",
                        data: dataString,
                        cache: false,
                        success: function(html)
                        {
                            //$('.unitinfolist').html(html);
                        }
                    }); 
                });
            }
        });
    });
  • 0
    В общем смысле вы можете поместить .each() в любую функцию, включая обработчик щелчка. Вы уверены, что $('.checkboxes1 input:checked') использует правильный селектор? Если никакие элементы не соответствуют этому селектору, .each() ничего не сделает. Если эти элементы созданы вашим начальным вызовом Ajax, они еще не будут существовать, когда .each() оператор .each() . Вы можете проверить, сколько элементов совпадают с console.log($('.checkboxes2 input:checked').length) . Возможно, вы могли бы показать некоторые из ваших HTML? (Или предоставьте нам демоверсию на jsfiddle.net. )
Теги:

1 ответ

1
Лучший ответ

Вы должны перенести элемент.each в функцию success jquery post или установить его async: false, чтобы следовать этому шаблону.

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType,
  async:false
});
  • 0
    Я попробовал то, что вы сказали, и это на полпути сработало. Я отредактировал свой вопрос, чтобы отразить мои изменения.
  • 0
    Не забудьте установить async: false тоже

Ещё вопросы

Сообщество Overcoder
Наверх
Меню