2011-07-11 3 views
0

Actuellement, je suis en utilisant ce script jquery combinant avec php (peu importe):me aider à réduire la quantité de code dans un script jquery

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function(){ 
    var select  = "<?php if_exist($select,  ''); ?>"; 
    var event  = "<?php if_exist($event,  'click'); ?>"; 
    var display  = "<?php if_exist($display, '#display'); ?>"; 
    var loading  = "<?php if_exist($loading, '#loading'); ?>"; 
    var datatype = "<?php if_exist($datatype, 'json'); ?>"; 
    var cache; 
    if (event == "submit"){ $("input:submit").hide(); } 
    $(select).bind(event , function(key){ 
     if (event == "keypress") { 
      if (key.which == <?php if_exist($keycode, '13'); ?>) { 
       $(loading).show(); 
       $.post(
        $(select).attr("action"), 
        $(select).serialize(), 
        function(data){ 
         if (datatype == "html" || datatype == "text"){ var returned = data; } 
         if (datatype == "json"){ var returned = data<?php if_exist($return, '.return'); ?>; } 
         if (returned != cache) 
         { 
          cache = returned; 
          if (datatype == "html" || datatype == "text"){ $(display).hide().html(data).fadeIn(); } 
          if (datatype == "json"){ $(display).hide().autoRender(data).fadeIn(); } 
          $(loading).hide(); 
         } 
        }, 
        datatype 
       ); 
       return false; 
      }; 
     } 
     else 
     { 
      $.post(
       $(select).attr("action"), 
       $(select).serialize(), 
       function(data){ 
        if (datatype == "html" || datatype == "text"){ var returned = data; } 
        if (datatype == "json"){ var returned = data<?php if_exist($return, '.returnValue'); ?>; } 
        if (returned != cache) 
        { 
         cache = returned; 
         if (datatype == "html" || datatype == "text"){ $(display).hide().html(data).fadeIn(); } 
         if (datatype == "json"){ $(display).hide().autoRender(data).fadeIn(); } 
         $(loading).hide(); 
        } 
       }, 
       datatype 
      ); 
      if ($event == 'submit') { return false;} 
     } 
    }); 
}); 
</script> 

Je veux réduire la quantité de code utilisé dans ce script, je pense que nous pouvons sûrement réduire la quantité de code dans ce script en donnant notre attention à la ligne # 11 qui contient: if (event == "keypress") {, parce que dans la prochaine instruction else le même code est répété deux fois, mais comment pouvons-nous faire cela? Une idée?

Répondre

1

La pièce suivante semble dupliquée:

   $.post(
        $(select).attr("action"), 
        $(select).serialize(), 
        function(data){ 
         if (datatype == "html" || datatype == "text"){ var returned = data; } 
         if (datatype == "json"){ var returned = data; } 
         if (returned != cache) 
         { 
          cache = returned; 
          if (datatype == "html" || datatype == "text"){ $(display).hide().html(data).fadeIn(); } 
          if (datatype == "json"){ $(display).hide().autoRender(data).fadeIn(); } 
          $(loading).hide(); 
         } 
        }, 
        datatype 
       ); 

Vous devriez envisager de déplacer ses fonctionnalités à une fonction (sic)!

+0

Monsieur, cela? s'il vous plaît, dites. –

+0

Vous avez ici un rappel qui peut être facilement déplacé à l'extérieur en tant que fonction séparée. Vous devrez faire attention à la visibilité des variables ('datatype' et' cache'). – Vlad

+1

Heads up (probablement pas si important ici comme avec l'autre réponse, certes): Le message original a été mal formaté et les infos ont été perdues - j'attends que mon edit soit approuvé, mais à quoi ressemble var var = data; 'to est en fait' var retourné = data ; '. Il y a quelques autres extraits PHP comme ça. – pinkgothic

1

En plus de la réponse de Vlad: Retirez le nécessaire si la requête et l'affectation des variables: Je suis un débutant, comment puis-je faire

$.post(
    $(select).attr("action"), 
    $(select).serialize(), 
    function(data) { 

     // in every case, data is assigned to another variable which is 
     // unnecessary as well 
     // if (datatype == "html" || datatype == "text"){ var returned = data; } 
     // if (datatype == "json"){ var returned = data; } 

     if (data != cache) { 
      cache = data; 
     } 

     if (datatype == "html" || datatype == "text") { 
      $(display).hide().html(data).fadeIn(); 
     } 
     else if (datatype == "json"){ 
      $(display).hide().autoRender(data).fadeIn(); 
     } 

     $(loading).hide(); 
    } 
       }, datatype); 
+1

Heads up: Le message original a été mal formaté et les infos ont été perdues - j'attends que mon edit soit approuvé, mais ce qui ressemble à 'var retourné = data;' est en fait 'var retourné = data ; '. Il y a quelques autres extraits PHP comme ça. – pinkgothic

+0

millions merci, il a fait du bon travail. :) –

Questions connexes