2010-06-21 3 views
0

Je cette html:jquery - comment obtenir le code html dans un div

<div class="portlet-header"> 
    Company Information ... <button> some button here </button> 
</div> 
<div class="portlet-content"> 
    <div class="content_regular"> 
     <table style=" width:100%; height:100%;"> 
      ...content 
     </table> 
    </div> 
</div> 

comment puis-je obtenir le code html après que je clique sur le bouton dans la partie portlet-tête, dans ce cas, l'étiquette de table ?

J'ai ce code jquery pour obtenir le texte sur l'en-tête: $(this).parent().text(); mais je n'ai obtenu nulle part en essayant de récupérer le html sous la classe "content_regular" comme indiqué ci-dessus.

J'espère que votre sagesse peut m'aider avec cela. Je sais cela très facile pour les autres mais je ne suis pas familier avec jquery.

grâce

+0

$ ('content_regular'). Html() fonctionne vraiment, mais le problème est que le code ci-dessus est un widget. et il y en a au moins 4 sur la même page. si j'utilise $ ('. content_regular'). html(), seul le premier est renvoyé. –

Répondre

3

Utilisez .next() pour obtenir .portlet-header-.portlet-content puis utiliser .html() plutôt que .text() pour obtenir le contenu, comme ceci:

$(".portlet-header").click(function() { 
    var html = $(this).next(".portlet-content").html(); 
}); 

S'il peut y avoir quelque chose entre les divs, un autre élément, etc, utilisez .nextAll() à la place , comme ceci: .nextAll(".portlet-content:first")

+0

@mcxiand Cela est le plus logique compte tenu de vos multiples widgets et de la sélection basée sur l'en-tête relatif. Si vous avez besoin de tous sur un clic, vous pouvez aussi utiliser le .each et les mettre dans un tableau. –

+0

Je suis d'accord que cela a le plus de sens, mais je ne peux pas sembler le faire fonctionner. mon code va comme ceci, $ (ceci) .parent(). next(). nextAll (". contentwithscroll_regular: first"). html(); -i doit appeler parent puisque le bouton se trouve dans l'en-tête du portlet -suivante pour aller à l'en-tête du portlet vers le contenu du portlet -im confus maintenant comment passer du contenu du portlet à la div interne content_regular avant d'appeler le html() –

+0

l'ai eu! :) $ (this) .parent(). Next(). Enfants (". Contentwithscroll_regular"). Html(); –

3

Tout d'abord, utilisez la fonction html() au lieu de la fonction text(). Deuxièmement, pointez votre sélecteur vers le bon noeud, quelque chose comme .portlet-content .content_regular table. Je vais vous laisser faire la combinaison de ces deux vous-même.

+0

ouais, je peux l'utiliser, mais sur la façon de traverser à la div contenu_regular de portlet-header est la chose que je voulais savoir. ce dont j'ai besoin, c'est le hmtl sous la div 0_ content_regular –

+0

Comme je l'ai dit, changez votre sélecteur et pointez-le vers le bon noeud. La méthode la plus simple consiste à utiliser le nom de classe lui-même. Si la classe est utilisée plusieurs fois, vous devez traverser à partir de la cible cliquée. Si c'est le cas, commencez avec la cible ($ (this)), montez d'un niveau (portlet-header), obtenez le frère suivant (portlet-content) et regardez dedans pour obtenir la table. –

+0

@Peter - Vous devez traverser ... un sélecteur ne fera pas le travail ici, ce sont des concepts différents. –

Questions connexes