2012-11-16 2 views
0

Avec le script suivant, je charge un document HTML dans un conteneur div et l'affiche. Avec la variable "x" j'évite que le document soit rechargé à chaque clic sur le bouton.jquery charger avec variable

La fonction permettant de masquer le conteneur est manquante ici, car elle n'a rien à voir avec ma question. Ma question est, comment dois-je changer le script, si j'ai plus de boutons qui chargent différents documents?

La variable "x" doit fonctionner individuellement pour tous les boutons. Y at-il quelque chose comme "this.variable" ou ai-je tort et je dois trouver quelque chose de complètement différent?

Répondre

1

Je définirais le document à charger dans un attribut de données. Par exemple:

<span class="button" data-doc="article.html">Load article</span> 

Puis:

$('.button').click(function(){ 
    var $this = $(this), 
     $box = $('.box'), 
     loaded = $this.data('loaded'), 
     doc; 

    if (loaded) { 
     $box.fadeIn(); 
     return; 
    } 

    doc = $this.data('doc'); 

    $box.load(doc, function() { 
     // mark it as being loaded 
     $this.data('loaded', true); 
     $box.fadeIn(); 
    }); 
}); 
+0

Merci pour cette solution. Je n'ai jamais travaillé avec l'attribut de données jusqu'à présent. – netS

+0

de rien! Je l'ai trouvé très pratique. jQuery va même désérialiser json que vous avez mis dedans ([exemple] (http://jsfiddle.net/lbstr/78nVd/)). – lbstr

0

En utilisant un gestionnaire d'événements() jQuery vous utilisez uniquement un gestionnaire d'événements une fois.

$('.button').one('click', function() { 
    $('.box').load('article.html'); 
}); 
$('.button').click(function() { 
    $('.box').fadeIn(); 
}); 
+0

Je ne sais pas il y en a un() dans jquery. C'est intéressant mais je pense que dans mon cas ce n'est pas le bon choix car je ne pourrai plus charger le contenu du bouton 1 après avoir cliqué sur un autre bouton et la boîte contient d'autres contenus. – netS