2010-11-15 5 views
0

Dans wordpress j'ai une page mise en place pour tirer dans un poste aléatoire, en utilisant jQuery je cherche à tirer des sections de cette page (aléatoire) à diverses sections sur le courant (accueil) au moment où le code est comme ci-dessous:jQuery charger divers id dans les sections de la page

$('#wrongQuote').load('random/index.php #wrongSaying' + '?noCache=' + Math.floor(Math.random()*10001)); 
$('#sayingBy').load('random/index.php #author' + '?noCache=' + Math.floor(Math.random()*10001)); 
$('#actualQuote').load('random/index.php #actualSaying' + '?noCache=' + Math.floor(Math.random()*10001));

le problème est ce tire dans un #wrongSaying aléatoire, #author et #actualSaying ... ce que je dois est d'obtenir au hasard, mais correspondant # wrongSaying/#author/#actualSaying

Donc je suppose que ce dont j'ai besoin est d'obtenir cette page 'random/index.php #wrongSaying' puis prenez div # x et insérer dans div # a, div # f dans div # e et ainsi de suite ...

Toutes les idées/l'aide seraient très appréciées!

Andy

+0

Votre code n'envoie pas réellement la valeur 'noCache'; le '# wrongSaying' (ou autre ID) devrait aller * après * la chaîne de requête. – PleaseStand

+0

@idealmachine - pas d'ID multiples sur la page, tout bien sur la différence entre ID/classes etc - merci pour le point sur le noCache je vais vérifier/modifier cela – tbwcf

+0

La chaîne de requête doit être un paramètre distinct, non concaténé à la url. –

Répondre

7

Je ne voudrais pas utiliser .load() avec 3 demandes ici, je ferais le même chargement et faire une demande au serveur en utilisant $.get(), comme ceci:

$.get('random/index.php', { noCache: Math.floor(Math.random()*10001) }, 
    function(data) { 
    data = $(data); 
    $('#wrongQuote').html(data.find('#wrongSaying')); 
    $('#sayingBy').html(data.find('#author')); 
    $('#actualQuote').html(data.find('#actualSaying')); 
}); 

Le chargement du fragment que vous obtenez avec .load() est rien que vous ne pouvez pas faire vous-même ... et quand vous répétez la même demande c'est quelque chose ne devrait pas faire vous-même ... être efficace et faire une demande, avec plus de code lisible IMO.

+0

Parfait, fonctionne un régal, merci beaucoup! – tbwcf

0

Vous pouvez charger le tout dans un élément caché et sortir de l'élément caché:

$(hiddenElement).load('random/index.php?noCache=' + Math.floor(Math.random()*10001)); 

$(elementYouWanToSet).html($(hiddenElement).find(elementYouWant)); 
+0

Merci j'ai eu une pensée similaire mais je ne suis pas sûr que c'est la meilleure méthode? Je suppose que parfois les travaux sales .. – tbwcf

+0

modifier le code côté serveur serait la manière propre, mais à moins que random/index.php est un fichier énorme, la manière sale devrait faire le travail. – generalhenry

+0

Vous pouvez le charger dans l'élément correct (sans élément caché) tant que vous passez '.load()' l'ID correct. –

0

.load() prend 3 paramètres, une URL, les données de la requête, et une fonction de rappel.

Essayez de changer vos lignes à celles-ci:

var randomID = Math.floor(Math.random()*10001); 
$('#wrongQuote').load('random/index.php #wrongSaying', 'noCache='+randomID); 
$('#sayingBy').load('random/index.php #author', 'noCache='+randomID); 
$('#actualQuote').load('random/index.php #actualSaying', 'noCache='+randomID); 

Cela ne pose aucun problème avec les ID en double, car seul l'ID donné à .load() est inséré dans le DOM, le reste est mis au rebut.

+0

Merci, cela améliore le peu de cache, mais aurait encore le problème de frapper la page trois fois, donc obtenir trois parties au hasard de l'énonciation, ne correspond pas .. – tbwcf

Questions connexes