Использование .queue jquery для очереди функций - PullRequest
2 голосов
/ 15 ноября 2010

Когда я удаляю параметр «ajax» из функции .queue(), мои вызовы ajax попадают в очередь. Единственная проблема заключается в том, что в документах jQuery говорится, что функция .queue() по умолчанию станет очередью 'fx' К сожалению, я уже использую эту очередь (для эффектов) и хочу использовать другую очередь специально для пользовательских функций. К сожалению, код внутри функции .queue() никогда не вызывается. У меня есть пример моего кода ниже (просто небольшой фрагмент). Это становится немного сложнее, если у вас есть дополнительные вопросы, не стесняйтесь комментировать.

$(document).ready(function(event) {

var target = event.target;
var ajaxify = new Ajaxify();

$.each(ajaxify.functions, function(index, value){

     if ($(target).hasClass(value)) {        
       console.log('this is in my console, and nowhere else in my code');
       $('#main').queue('customfunctions', function (next) {
         var self = this;          
         ajaxify[value](target, event, next, self);       
       });

     }

   });
  $('#main').dequeue('customfunctions');
});

function Ajaxify() {

  this.functions = [
                   'ajaxify_overlay',
                   'ajaxify_overlayCancel',
                   'ajaxify_overlaySubmit',
                   'ajaxify_rollout',
                   'ajaxify_rolloutCancel',
                   'ajaxify_rolloutSubmit',
                   'ajaxify_upload',
                   'ajaxify_contentArea',
                   'ajaxify_itemToggler',
                   'ajaxify_closer',
                   'ajaxify_submit',
                   'ajaxify_inputActivate',
                   'ajaxify_executeAndRefresh',
                   'ajaxify_empty' //no comma on the last entry!!!!  
                 ];

}

Ajaxify.prototype.ajaxify_executeAndRefresh = function (target, event, next, self) {

  event.preventDefault();

  var newPath = getVar($(target).attr('class'), 'url'); //getVar function not included, it will get the new path for the ajax call below

  var url = $(target).attr('href');

  $.ajax({    
    type: "POST",
    url: url,
    success: function(transport) {

      refreshPage(newPath); //refreshPage function not included, it will do a page refresh with the new path

      next();     

    }
  });

}

1 Ответ

3 голосов
/ 15 ноября 2010

Вам нужно вызвать dequeue(), чтобы запустить следующую функцию в очереди.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...