Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using jquery's .queue to queue functions

When i remove the parameter 'ajax' from from the .queue() function, my ajax calls do get queued. The only problem is, the jQuery docs say that the .queue() function will then default to the 'fx' queue. Unfortunately, I am already using this queue (for effects) and I want to use another queue specifically for custom functions. Unfortunately, the code inside the .queue() function never gets called. I have an example of my code below (just a small snippet). It is getting a little complicated if you have further questions feel free to comment.

$(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();     

    }
  });

}
like image 282
bmarti44 Avatar asked Aug 21 '26 02:08

bmarti44


1 Answers

You need to call dequeue() to run the next function in the queue.

like image 121
SLaks Avatar answered Aug 23 '26 15:08

SLaks



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!