2010-04-28 3 views
0

Je ne fais pas beaucoup de jquery/javascript mais je voulais demander quelques conseils sur le morceau suivant. J'ai essayé de couper autant que possible. La plupart de ceci était du code semi-hérité avec un tas d'événements codés en dur. J'aimerais les généraliser davantage en mettant le nom de l'objet dans le HTML et en accédant via jquery au traitement (by_date, by_popularity). Je récupère en tant que chaîne et j'accède à l'objet via la fenêtre [current_obj]. Est-ce un bon moyen de le faire ou est-ce que je manque quelque chose? Existe-t-il des moyens préférables d'introduire la spécificité? merci pour tout conseil.en utilisant l'objet fenêtre pour accéder aux objets définis par l'utilisateur global et en utilisant du texte dans html pour créer une spécificité supplémentaire

<script> 
var by_date={}; 
by_date.current_page=1; 
by_date.per_page=4; 

var by_popularity={}; 
by_popularity.current_page=1; 
by_popularity.per_page=4; 

$(function(){ 
    $('.previous.active').live('click',function(){ 
     window[current_obj].current_page--; 
     process(window[current_obj]); 
    }); 
}); 

function process(game_obj){ 
    //will process and output new items here 
} 
</script> 

<div class="otherContainer"> 
    <a class='previous active'>Prev</a><div style="display:none;">by_date</div> | <a class='next'>Next</a><div style="display:none;">by_date</div> 
</div> 


<div class="topPrevNextContainer"> 
    <a class='previous active'>Prev</a><div style="display:none;">by_popularity</div> | <a class='next'>Next</a><div style="display:none;">by_popularity</div> 
</div> 

Répondre

0

Certains considèrent que votre code place l'espace de noms global en littering. Une technique courante pour atteindre une portée limitée en JavaScript est de définir et d'appeler immédiatement une fonction anonyme.

(function() { 
    // this function is anonymous and is immediately called 
    // variables declared inside this function are not members 
    // of the global namespace. 

    var options = {}; 

    options.by_date={}; 
    options.by_date.current_page=1; 
    options.by_date.per_page=4; 

    options.by_popularity={}; 
    options.by_popularity.current_page=1; 
    options.by_popularity.per_page=4; 

    $(function(){ 
     $('.previous.active').live('click',function(){ 
      options[current_obj].current_page--; 
      process(options[current_obj]); 
     }); 
    }); 

    function process(game_obj){ 
     //will process and output new items here 
    } 
})(); 
+0

cool. ça a du sens. donc je suppose que ce n'est pas un hack complet pour faire la saisie de la valeur du texte html. THX – timpone

Questions connexes