From 7d8f1d853a8f6af960d021f267e70941c9c049d3 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Fri, 9 May 2008 08:50:56 +0000 Subject: [PATCH] forcer l'ajax sur des div (perfs + eviter bug lorsque des a.ajax sont dans des formulaires div.ajax) ; mettre le .each() au bon endroit ; nettoyage des espaces --- dist/javascript/ajaxCallback.js | 140 ++++++++++++++++---------------- 1 file changed, 71 insertions(+), 69 deletions(-) diff --git a/dist/javascript/ajaxCallback.js b/dist/javascript/ajaxCallback.js index aa65bdd4f4..58b28125fd 100644 --- a/dist/javascript/ajaxCallback.js +++ b/dist/javascript/ajaxCallback.js @@ -88,29 +88,29 @@ jQuery.fn.positionner = function() { // rechargement ajax d'un formulaire dynamique implemente par formulaires/xxx.html jQuery.fn.formulaire_dyn_ajax = function(target) { - if (typeof target == 'undefined') target = this; - this - .find('form:not(.noajax)') - .prepend("<input type='hidden' name='var_ajax' value='form' />") - .ajaxForm({ - beforeSubmit: function(){ - jQuery(target).addClass('loading').animeajax(); - }, - success: function(c){ - var d = jQuery('.ajax', - jQuery('<div><\/div>').html(c)); - if (d.length) - c = d.html(); - jQuery(target) - .removeClass('loading') - .html(c) - .positionner(); - }, - iframe: jQuery.browser.msie - }) - .addClass('noajax') // previent qu'on n'ajaxera pas deux fois le meme formulaire en cas de ajaxload - .end(); - return this; // don't break the chain + return this.each(function() { + var cible = target || this; + jQuery('form:not(.noajax)', this) + .prepend("<input type='hidden' name='var_ajax' value='form' />") + .ajaxForm({ + beforeSubmit: function(){ + jQuery(cible).addClass('loading').animeajax(); + }, + success: function(c){ + var d = jQuery('div.ajax', + jQuery('<div><\/div>').html(c)); + if (d.length) + c = d.html(); + jQuery(cible) + .removeClass('loading') + .html(c) + .positionner(); + }, + iframe: jQuery.browser.msie + }) + .addClass('noajax') // previent qu'on n'ajaxera pas deux fois le meme formulaire en cas de ajaxload + ; + }); } // rechargement ajax d'une noisette implementee par fond/ajax.html @@ -118,61 +118,63 @@ jQuery.fn.formulaire_dyn_ajax = function(target) { var preloaded_urls = {}; var ajaxbloc_selecteur; jQuery.fn.ajaxbloc = function() { - var blocfrag = this; + return this.each(function() { + var blocfrag = jQuery(this); - var on_pagination = function(c) { - jQuery(blocfrag) - .html(c) - .removeClass('loading') - .positionner(); - } + var on_pagination = function(c) { + jQuery(blocfrag) + .html(c) + .removeClass('loading') + .positionner(); + } - var ajax_env = (""+this.attr('class')).match(/env-([^ ]+)/); - if (!ajax_env || ajax_env==undefined) return; - ajax_env = ajax_env[1]; - var ajax_cle = (""+this.attr('class')).match(/cle-([^ ]+)/); - if (!ajax_cle || ajax_cle==undefined) return; - ajax_cle = ajax_cle[1]; - if (ajaxbloc_selecteur==undefined) - ajaxbloc_selecteur = '.pagination a,a.ajax'; - jQuery(ajaxbloc_selecteur,this).not('.noajax').each(function(){ - var url = this.href.split('#'); - url[0] += (url[0].indexOf("?")>0 ? '&':'?')+'var_ajax=1&var_ajax_env='+ajax_env+'&var_ajax_cle='+ajax_cle; - if (jQuery(this).is('.preload') && !preloaded_urls[url[0]]) { - jQuery.ajax({"url":url[0],"success":function(r){preloaded_urls[url[0]]=r;}}); + var ajax_env = (""+blocfrag.attr('class')).match(/env-([^ ]+)/); + if (!ajax_env || ajax_env==undefined) return; + ajax_env = ajax_env[1]; + var ajax_cle = (""+blocfrag.attr('class')).match(/cle-([^ ]+)/); + if (!ajax_cle || ajax_cle==undefined) return; + ajax_cle = ajax_cle[1]; + if (ajaxbloc_selecteur==undefined) + ajaxbloc_selecteur = '.pagination a,a.ajax'; + jQuery(ajaxbloc_selecteur,this).not('.noajax').each(function(){ + var url = this.href.split('#'); + url[0] += (url[0].indexOf("?")>0 ? '&':'?')+'var_ajax=1&var_ajax_env='+ajax_env+'&var_ajax_cle='+ajax_cle; + if (jQuery(this).is('.preload') && !preloaded_urls[url[0]]) { + jQuery.ajax({"url":url[0],"success":function(r){preloaded_urls[url[0]]=r;}}); + } + jQuery(this).click(function(){ + jQuery(blocfrag) + .animeajax() + .addClass('loading'); + if (preloaded_urls[url[0]]) { + on_pagination(preloaded_urls[url[0]]); + triggerAjaxLoad(document); + } else { + jQuery.ajax({ + url: url[0], + success: function(c){ + on_pagination(c); + preloaded_urls[url[0]] = c; + } + }); } - jQuery(this).click(function(){ - jQuery(blocfrag) - .animeajax() - .addClass('loading'); - if (preloaded_urls[url[0]]) { - on_pagination(preloaded_urls[url[0]]); - triggerAjaxLoad(document); - } else { - jQuery.ajax({ - url: url[0], - success: function(c){ - on_pagination(c); - preloaded_urls[url[0]] = c; - } - }); - } - return false; - }); - }).addClass('noajax'); // previent qu'on ajax pas deux fois le meme lien + return false; + }); + }).addClass('noajax'); // previent qu'on ajax pas deux fois le meme lien + }); }; // Ajaxer les formulaires qui le demandent, au demarrage jQuery(function() { - jQuery('form').parents('.ajax') - .each(function(){$(this).formulaire_dyn_ajax();}); - jQuery('.ajaxbloc').each(function(){$(this).ajaxbloc();}); + jQuery('form').parents('div.ajax') + .formulaire_dyn_ajax(); + jQuery('div.ajaxbloc').ajaxbloc(); }); // ... et a chaque fois que le DOM change onAjaxLoad(function() { - jQuery('form', this).parents('.ajax') - .each(function(){$(this).formulaire_dyn_ajax();}); - jQuery('.ajaxbloc', this) - .each(function(){$(this).ajaxbloc();}); + jQuery('form', this).parents('div.ajax') + .formulaire_dyn_ajax(); + jQuery('div.ajaxbloc', this) + .ajaxbloc(); }); -- GitLab