2010-01-22 6 views
2

Je suis un peu nouveau à jQuery, mais je me suis amusé à essayer d'apprendre toutes les astuces cool qu'il peut faire. L'une des choses que j'essaie d'utiliser actuellement est la fonction de chargement pour obtenir un rapport météorologique de l'un des sites que nous utilisons pour les rapports quotidiens. Le code que j'utilise estjQuery load html - comment obtenir la dernière table retournée

$(document).ready(function() { 
$("#table").load("weather_url table"); 
}); 

Cela fonctionne exactement comme je l'espérais et renvoie toutes les tables. Le problème que j'ai est qu'aucune des tables n'a une étiquette d'identification, ainsi j'obtiens tous les tableaux dans la page. Je n'ai besoin que d'une seule table contenant les informations météo. Je ne suis pas sûr de savoir comment cibler celui dont j'ai besoin. Est-ce possible même sans ID? J'ai également essayé d'utiliser

$('table:last-child').show(); 

Mais il montre toujours toutes les tables.

Répondre

0

il y a une fonction jquery qui vous donne le nième élément

http://api.jquery.com/eq-selector/

+0

Gagnant du gagnant, dîner de poulet! Le nième article était capable de sortir la table exacte dont j'avais besoin! Merci beaucoup! – Jason

0

Utilisez

$('#table:last-child').show(); 

Je suppose que la visibilité de toutes les tables chargées sont cachées et vous voulez juste montrer la dernière table.

+0

Il a déjà dit qu'il a essayé de le faire de cette façon, mais je suppose que toutes les tables sont visibles. – kjagiello

+0

Notez le "#" ajouté dans la réponse – Veger

2

Vous devriez être en mesure de le faire directement dans le sélecteur après l'URL. Voir « fragments de page de chargement » ici: http://api.jquery.com/load/

$(document).ready(function() { 
    $("#table").load("weather_url table:last"); 
}); 

Vous devez également savoir qu'il est mauvais pour la performance si vous chargez une page complète et utilisez seulement une petite partie de celui-ci. Ensuite, il serait préférable de séparer la dernière table à sa propre page, et inclure (de préférence côté serveur) que dans la page d'origine.

0

essayer

$(document).ready(function() { 
    $("#table").load("weather_url table:last-child"); // get last 
}); 

- AJOUTÉEédité -

si vous rencontrez des problèmes avec la source html non structurée, vous pouvez aussi essayer:

$("#table").load("weather_url table:contains('unique text for filter')"); 

cette obtiendra une table qui contient 'texte unique pour le filtre'.

plus d'utilisation: contains() here.

+0

@gregers: y at-il ': last' dans jQuery? ou tu veux dire ': dernier enfant'? – Reigel

+0

c'est de l'argent mon ami! toujours pas tout à fait là mais cela ne m'a donné que la dernière table. Comme la source que je saisis n'est pas très structurée, il semble y avoir beaucoup de tables imbriquées, ce qui m'amène à la dernière table mais il y a apparemment une autre table imbriquée, qui est celle dont j'ai besoin. J'ai parcouru le html presque ligne par ligne et je peux vérifier que cette table est par itslef, juste imbriquée. la table retournée a une barre de navigation sur le côté gauche dans sa propre table et la météo sur la droite dans sa propre table, les deux sont imbriqués dans une autre table. Peut-on le composer en plus? Merci! – Jason