Obtenir le code HTML externe de l'élément sélectionné

792

J'essaie d'obtenir le HTML d'un objet sélectionné avec jQuery. Je connais la .html()fonction; le problème est que j'ai besoin du code HTML incluant l'objet sélectionné (une ligne de tableau dans ce cas, où .html()ne renvoie que les cellules à l'intérieur de la ligne).

J'ai cherché et trouvé quelques méthodes de type très «hackish» pour cloner un objet, l'ajouter à un div nouvellement créé, etc., etc., mais cela semble vraiment sale. Existe-t-il un meilleur moyen ou la nouvelle version de jQuery (1.4.2) offre-t-elle des outerHtmlfonctionnalités?

Ryan
la source
89
Il est scandaleux que jQuery n'ait pas les moyens de faire une telle chose. J'en ai besoin aussi.
Josef Sábl
9
J'ai publié une demande de fonctionnalité, avec une référence à ce fil, et la réponse initiale a été positive. bugs.jquery.com/ticket/8142
mindplay.dk
11
Pour éviter à certaines personnes quelques secondes de leur temps d'essayer la solution d'Ulhas Tuscano, cela ne fonctionne pas.
Dave
73
Euh, ça continue. $('div')[0].outerHTML.
Salman von Abbas
24
@Tuscan signifiait $ ("# selectorid"). Prop ("uterHTML ")
guy mograbi

Réponses:

189

Édition 2014: La question et cette réponse datent de 2010. À l'époque, aucune meilleure solution n'était largement disponible. Maintenant, beaucoup d'autres réponses sont meilleures: celles d'Eric Hu ou de Re Capcha par exemple.

Ce site semble avoir une solution pour vous: jQuery: externalHTML | Yelotofu

jQuery.fn.outerHTML = function(s) {
    return s
        ? this.before(s).remove()
        : jQuery("<p>").append(this.eq(0).clone()).html();
};
David V.
la source
4
J'ai vu cela mais j'essayais de l'éviter parce qu'il semblait pirater et comme il aurait dû y avoir une meilleure façon, mais cela fonctionne bien. Merci.
Ryan
359
$ ('[sélecteur]') [0] .outerHTML
drogon
25
@drogon: sachez que cette fonctionnalité outerHTMLn'est prise en charge par Firefox que depuis la version 11 (mars 2012).
Blaise
8
@ PavingWays: Dans la défense de Firefox: outerHTMLest un attribut propriétaire inventé par Microsoft, pas une norme W3C. (Fait amusant: innerHTMLest standardisé uniquement depuis HTML5 )
Blaise
3
pure jsel.outerHTML || document.createElement('div').appendChild( el.cloneNode( true ) ).parentNode.innerHTML
rab
675

Je pense qu'actuellement (5/1/2012), tous les principaux navigateurs prennent en charge la fonction externeHTML. Il me semble que cet extrait est suffisant. Personnellement, je choisirais de mémoriser ceci:

// Gives you the DOM element without the outside wrapper you want
$('.classSelector').html()

// Gives you the outside wrapper as well only for the first element
$('.classSelector')[0].outerHTML

// Gives you the outer HTML for all the selected elements
var html = '';
$('.classSelector').each(function () {
    html += this.outerHTML;
});

//Or if you need a one liner for the previous code
$('.classSelector').get().map(function(v){return v.outerHTML}).join('');

EDIT : statistiques de support de base pourelement.outerHTML

Eric Hu
la source
14
@SalmanPK FireFox n'a pas pris en charge cette propriété avant le 2011-11-11. bugzilla.mozilla.org/show_bug.cgi?id=92264 Il y a encore beaucoup d'utilisateurs bloqués sur 3.6. Je pense que c'est en fait un parfait exemple de la raison pour laquelle on choisirait d'utiliser jQuery plutôt que la fonctionnalité native.
Lucifer Sam
8
@LuciferSam Firefox 3.6 a ~ 6% de part de marché mondiale selon gs.statcounter.com Cependant, le filtrage des résultats sur les 6 derniers mois (décembre '11 -mai '12) et sur les États-Unis le pousse hors de leur liste des 12 premiers (en dessous de 3 %). J'ai choisi cette fenêtre car cet article suggère que l'utilisation de FF 3.6 a considérablement chuté après janvier 2012. Compte tenu de ces données, je maintiens ma solution pour un code plus simple sur la compatibilité descendante.
Eric Hu
4
Je ne pourrais pas être plus d'accord. C'est la bonne réponse ici, pas les autres choses que les gens suggèrent. L'élément que je sélectionne possède des attributs que je veux conserver qui sont perdus par les autres réponses. Enfer, cela fonctionne même dans IE!
Matthew Bonig
Non. Firefox 11 n'est sorti que le 13 mars 2012 (corrigé maintenant), c'est-à-dire il y a moins d'un an au moment de la rédaction de cet article. L'un des avantages de jQuery est qu'il prend en charge les navigateurs plus anciens. Je pense que le support d'au moins un an est raisonnable, et certains sites vont évidemment en vouloir plus (rappelez-vous, jQuery prend en charge IE6).
Matthew Flaschen
7
@EricHu statcounter indique également qu'IE8 détient 9,3% de la part globale du navigateur. Pourtant, certains de mes sites Web sont proches de la barre des 40%. Tout est relatif et varie énormément d'un site Web à l'autre, Firefox 3.6 représente encore environ 10% sur certains de mes sites Web. La part de marché mondiale ne veut rien dire. Tout dépend de l'audience de votre site Web.
George Reith
343

Pas besoin de générer une fonction pour cela. Faites comme ça:

$('a').each(function(){
    var s = $(this).clone().wrap('<p>').parent().html();
    console.log(s);
});

(La console de votre navigateur affichera ce qui est connecté, soit dit en passant. La plupart des derniers navigateurs depuis environ 2009 ont cette fonctionnalité.)

La magie est la fin:

.clone().wrap('<p>').parent().html();

Le clone signifie que vous ne dérangez pas réellement le DOM. Exécutez-le sans et vous verrez des pbalises insérées avant / après tous les hyperliens (dans cet exemple), ce qui n'est pas souhaitable. Alors, oui, utilisez .clone().

La façon dont cela fonctionne est qu'il prend chaque abalise, en fait un clone dans la RAM, encapsule avec des pbalises, en obtient le parent (c'est-à-dire la pbalise), puis en obtient la innerHTMLpropriété.

EDIT : a pris des conseils et a changé les divbalises en pbalises parce que c'est moins de frappe et fonctionne de la même manière.

Volomike
la source
82
Je me demande pourquoi l'équipe jQuery n'ajoute pas de méthode externeHtml ()?
Donny V.19
1
@Derek, cela n'aurait pas d'importance. J'utilise DIV comme wrapper pour y mettre quelque chose.
Volomike
11
.clone (). wrap ('<p>') .parent (). html (); est plus court
Uğur Gümüşhan
1
Oui, moins de frappes et obtient le même effet.
Volomike
14
Mieux vaut utiliser DIV au lieu de P pour une solution générale - tous les éléments ne peuvent pas être encapsulés dans P en tant que HTML valide.
Blazemonger
149

Et pour prop('outerHTML'):?

var outerHTML_text = $('#item-to-be-selected').prop('outerHTML');

Et pour régler:

$('#item-to-be-selected').prop('outerHTML', outerHTML_text);

Ça a marché pour moi.

PS : Ceci est ajouté dans jQuery 1.6 .

Re Captcha
la source
4
Code très soigné et petit par rapport aux autres réponses. Q: Cela a-t-il les mêmes restrictions externalHTML que celles mentionnées dans d'autres réponses? Ça marche en FF <11?
MacroMan
3
Fonctionne bien, cela pourrait bien être la meilleure solution ici. En ce qui concerne les navigateurs, cela devrait être aussi compatible que externalHTLM. La méthode prop () consiste simplement à obtenir la propriété externalHTML.
Tom Tom
2
Cette solution est meilleure, cependant Jquery 1.6.1 a été publié en 2011. La question (et ma réponse) date de 2010.
David V.
1
Pour moi "$ ('[sélecteur]') [0] .outerHTML;" n'a pas fonctionné dans tous les cas, mais "$ ('# élément à sélectionner'). prop ('externalHTML');" Oui!
Eduardo Lucio
2
$ ('# élément à sélectionner'). attr ('externalHTML'); // ** Pour les jQuery précédents
Meetai.com
91

Étendez jQuery:

(function($) {
  $.fn.outerHTML = function() {
    return $(this).clone().wrap('<div></div>').parent().html();
  };
})(jQuery);

Et utilisez-le comme ceci: $("#myTableRow").outerHTML();

jessica
la source
8
Petit problème avec cette solution: vous devez cloner () avant d'envelopper (), sinon vous laissez le <div> d'habillage supplémentaire dans le document.
mindplay.dk
1
Merci, mindplay.dk - J'ai édité le code pour incorporer votre suggestion .. bonne capture. :)
jessica
2
Que diriez-vous d'inverser cela: return $('<div>').append(this.clone()).html();c'est juste un peu plus pertinent.
Justin Warkentin le
2
Vous devez d'abord vérifier le HTML externe et l'utiliser uniquement pour les navigateurs qui le prennent en charge
James Westgate
C'est idéal pour les gens comme moi qui aiment construire du HTML dans les réponses AJAX en utilisant des objets jQuery et les fonctions .appendTo () et .append (). .outerHTML ne fonctionne pas pour ces instances de ce que j'ai vu dans mes tests. Quelqu'un d'autre voudra peut-être vérifier cela, mais je n'ai pas le temps.
Sean Kendle
43

Je suis d'accord avec Arpan (13 décembre 10 5:59).

Sa façon de le faire est en fait une bien meilleure façon de le faire, car vous n'utilisez pas de clone. La méthode de clonage prend beaucoup de temps, si vous avez des éléments enfants, et personne d'autre ne semble se soucier qu'IE ait réellementouterHTML attribut (oui IE a en fait QUELQUES astuces utiles dans sa manche).

Mais je créerais probablement son script un peu différent:

$.fn.outerHTML = function() {
    var $t = $(this);
    if ($t[0].outerHTML !== undefined) {
        return $t[0].outerHTML;
    } else {
        var content = $t.wrap('<div/>').parent().html();
        $t.unwrap();
        return content;
    }
};
Tokimon
la source
2
Cela a parfaitement fonctionné pour moi. En raison d'un bogue avec clone()et textarea, j'avais besoin d'une solution non clone, et c'était parfait.
Shpigford
5
+1 pour l'utilisation native outerHTMLlorsque disponible, car il est pris en charge par Chrome en plus d'Internet Explorer.
Andy E
9
if (! ('externalHTML' dans $ t [0])) alert ('bon sang, mettez à jour votre navigateur');
psycho brm
19

Pour être vraiment jQuery-esque, vous voudrez peut- outerHTML()être être un getter et un setter et avoir un comportement aussi similaire html()que possible:

$.fn.outerHTML = function (arg) {
    var ret;

    // If no items in the collection, return
    if (!this.length)
        return typeof arg == "undefined" ? this : null;
    // Getter overload (no argument passed)
    if (!arg) {
        return this[0].outerHTML || 
            (ret = this.wrap('<div>').parent().html(), this.unwrap(), ret);
    }
    // Setter overload
    $.each(this, function (i, el) {
        var fnRet, 
            pass = el,
            inOrOut = el.outerHTML ? "outerHTML" : "innerHTML";

        if (!el.outerHTML)
            el = $(el).wrap('<div>').parent()[0];

        if (jQuery.isFunction(arg)) { 
            if ((fnRet = arg.call(pass, i, el[inOrOut])) !== false)
                el[inOrOut] = fnRet;
        }
        else
            el[inOrOut] = arg;

        if (!el.outerHTML)
            $(el).children().unwrap();
    });

    return this;
}

Démo de travail: http://jsfiddle.net/AndyE/WLKAa/

Cela nous permet de passer un argument à outerHTML, qui peut être

  • une fonction annulable - function (index, oldOuterHTML) { }- où la valeur de retour deviendra le nouveau code HTML de l'élément (sauf s'il falseest renvoyé).
  • une chaîne, qui sera définie à la place du code HTML de chaque élément.

Pour plus d'informations, consultez les documents jQuery pour html().

Andy E
la source
Cela devrait être ajouté au noyau jQuery afin que les gens n'aient pas besoin d'y penser. Ma seule question est de savoir si wrap () / unwrap () est susceptible d'avoir des performances meilleures ou pires que clone ()?
IMSoP
1
IMSoP: En général, le bouclage / déballage sera plus rapide car le clone doit copier tous les éléments enfants et les attributs de l'élément. wrap () ne crée qu'un seul élément, et unwrap () le détruit, tous les autres éléments sont simplement déplacés, ce qui est une opération assez rapide la plupart du temps.
Andy E
16

Vous pouvez également utiliser get (récupérer les éléments DOM correspondant à l'objet jQuery.).

par exemple:

$('div').get(0).outerHTML;//return "<div></div>"

Comme méthode d'extension:

jQuery.fn.outerHTML = function () {
  return this.get().map(function (v) {
    return v.outerHTML
  }).join()
};

Ou

jQuery.fn.outerHTML = function () {
  return $.map(this.get(), function (v) {
    return v.outerHTML
  }).join()
};

Choix multiple et retournez le html externe de tous les éléments correspondants.

$('input').outerHTML()

revenir:

'<input id="input1" type="text"><input id="input2" type="text">'
MJ Vakili
la source
11

Pour créer un plugin jQuery COMPLET en tant que .outerHTML, ajoutez le script suivant à n'importe quel fichier js et incluez-le après jQuery dans votre en-tête:

mise à jour La nouvelle version a un meilleur contrôle ainsi qu'un service plus convivial de jQuery Selector! :)

;(function($) {
    $.extend({
        outerHTML: function() {
            var $ele = arguments[0],
                args = Array.prototype.slice.call(arguments, 1)
            if ($ele && !($ele instanceof jQuery) && (typeof $ele == 'string' || $ele instanceof HTMLCollection || $ele instanceof Array)) $ele = $($ele);
            if ($ele.length) {
                if ($ele.length == 1) return $ele[0].outerHTML;
                else return $.map($("div"), function(ele,i) { return ele.outerHTML; });
            }
            throw new Error("Invalid Selector");
        }
    })
    $.fn.extend({
        outerHTML: function() {
            var args = [this];
            if (arguments.length) for (x in arguments) args.push(arguments[x]);
            return $.outerHTML.apply($, args);
        }
    });
})(jQuery);

Cela vous permettra non seulement d'obtenir le HTML externe d'un élément, mais également d'obtenir un retour de plusieurs éléments à la fois dans un tableau! et peut être utilisé dans les deux styles standard jQuery en tant que tels:

$.outerHTML($("#eleID")); // will return outerHTML of that element and is 
// same as
$("#eleID").outerHTML();
// or
$.outerHTML("#eleID");
// or
$.outerHTML(document.getElementById("eleID"));

Pour plusieurs éléments

$("#firstEle, .someElesByClassname, tag").outerHTML();

Exemples d'extraits:

SpYk3HH
la source
9

vous pouvez aussi le faire de cette façon

document.getElementById(id).outerHTML

où id est l'id de l'élément que vous recherchez

Andy
la source
4
$("#" + id).attr("id")est incroyablement redondant. Si vous avez déjà l'id dans une variable, pourquoi utilisez-vous un sélecteur jquery pour extraire l'élément du dom, puis interrogez-vous son attribut ID?
Sam Dufel
7

J'ai utilisé la solution de Jessica (qui a été éditée par Josh) pour faire fonctionner externalHTML sur Firefox. Le problème est cependant que mon code cassait parce que sa solution enveloppait l'élément dans un DIV. L'ajout d'une ligne de code supplémentaire a résolu ce problème.

Le code suivant vous donne le externalHTML en laissant l'arborescence DOM inchangée.

$jq.fn.outerHTML = function() {
    if ($jq(this).attr('outerHTML'))
        return $jq(this).attr('outerHTML');
    else
    {
    var content = $jq(this).wrap('<div></div>').parent().html();
        $jq(this).unwrap();
        return content;
    }
}

Et utilisez-le comme ceci: $ ("# myDiv") .uterHTML ();

J'espère que quelqu'un le trouvera utile!

Arpan Dhandhania
la source
1
Utilisez simplement .clone comme @mindplay le suggère dans son commentaire - c'est plus facile
Yarin
4

Si le scénario ajoute dynamiquement une nouvelle ligne, vous pouvez utiliser ceci:

var row = $(".myRow").last().clone();
$(".myRow").last().after(row);

.myrowest le nom de classe du <tr>. Il fait une copie de la dernière ligne et l'insère en tant que nouvelle dernière ligne. Cela fonctionne également dans IE7 , tandis que la [0].outerHTMLméthode ne permet pas les affectations dans ie7

Stefan Bookholt
la source
3

node.cloneNode () ne ressemble guère à un hack. Vous pouvez cloner le nœud et l'ajouter à n'importe quel élément parent souhaité, et également le manipuler en manipulant des propriétés individuelles, plutôt que d'avoir à, par exemple, exécuter des expressions régulières dessus, ou l'ajouter au DOM, puis le manipuler par la suite.

Cela dit, vous pouvez également parcourir les attributs de l'élément pour en construire une représentation sous forme de chaîne HTML. Il semble probable que c'est ainsi que n'importe quelle fonction externalHTML serait implémentée si jQuery en ajoutait une.

Ben Regenspan
la source
3

J'ai utilisé la solution de Volomike mise à jour par Jessica. Il suffit d'ajouter une vérification pour voir si l'élément existe et de le rendre vide au cas où il ne le ferait pas.

jQuery.fn.outerHTML = function() {
return $(this).length > 0 ? $(this).clone().wrap('<div />').parent().html() : '';
};

Bien sûr, utilisez-le comme:

$('table#buttons').outerHTML();
Ivan Chaer
la source
3

Vous pouvez trouver une bonne option .outerHTML () ici https://github.com/darlesson/jquery-outerhtml .

Contrairement à .html () qui ne renvoie que le contenu HTML de l'élément, cette version de .outerHTML () renvoie l'élément sélectionné et son contenu HTML ou le remplace par la méthode .replaceWith () mais avec la différence qui permet au HTML de remplacement d'être hérité par l'enchaînement.

Des exemples peuvent également être vus dans l'URL ci-dessus.

Darlesson
la source
2

Notez que la solution de Josh ne fonctionne que pour un seul élément.

On peut dire que le HTML "externe" n'a vraiment de sens que si vous avez un seul élément, mais il y a des situations où il est logique de prendre une liste d'éléments HTML et de les transformer en balisage.

Étendant la solution de Josh, celle-ci gérera plusieurs éléments:

(function($) {
  $.fn.outerHTML = function() {
    var $this = $(this);
    if ($this.length>1)
      return $.map($this, function(el){ return $(el).outerHTML(); }).join('');
    return $this.clone().wrap('<div/>').parent().html();
  }
})(jQuery);

Edit: un autre problème avec la solution de Josh a été corrigé, voir le commentaire ci-dessus.

mindplay.dk
la source
1
La plupart des méthodes "getter" jQuery renvoient des données pour le premier élément uniquement, il serait donc plus logique de faire correspondre ce comportement.
Andy E
Je pense que j'ai expliqué clairement pourquoi cela fonctionne de cette façon? Cela rendrait le code laid / compliqué lorsque vous avez une liste d'éléments - si pour une raison quelconque vous ne voulez le balisage que pour le premier élément, utilisez simplement: first dans votre sélecteur.
mindplay.dk
Bien sûr, tout comme vous pouvez simplement utiliser map avec la solution de tout le monde pour obtenir le code HTML de plusieurs éléments. Tout ce que je disais, c'est qu'il est plus cohérent de faire correspondre le comportement des méthodes jQuery standard.
Andy E
2

J'ai fait ce test simple avec externalHTML étant une solution de tokimon (sans clone), et externalHTML2 étant une solution de jessica (clone)

console.time("outerHTML");
for(i=0;i<1000;i++)
 {                 
  var html = $("<span style='padding:50px; margin:50px; display:block'><input type='text' title='test' /></span>").outerHTML();
 }                 
console.timeEnd("outerHTML");

console.time("outerHTML2");

 for(i=0;i<1000;i++)
 {                 
   var html = $("<span style='padding:50px; margin:50px; display:block'><input type='text' title='test' /></span>").outerHTML2();
  }                 
  console.timeEnd("outerHTML2");

et le résultat dans mon navigateur Chrome (Version 20.0.1132.57 (0)) était

externeHTML
: 81 ms externeHTML2: 439 ms

mais si nous utilisons la solution tokimon sans la fonction native externalHTML (qui est maintenant prise en charge dans presque tous les navigateurs)

on a

ExternalHTML
: 594ms ExternalHTML2: 332ms

et il y aura plus de boucles et d'éléments dans des exemples du monde réel, donc la combinaison parfaite serait

$.fn.outerHTML = function() 
{
  $t = $(this);
  if( "outerHTML" in $t[0] ) return $t[0].outerHTML; 
  else return $t.clone().wrap('<p>').parent().html(); 
}

la méthode de clonage est donc plus rapide que la méthode wrap / unwrap
(jquery 1.7.2)

Petar
la source
2

Voici un plugin externalHTML très optimisé pour jquery: ( http://jsperf.com/outerhtml-vs-jquery-clone-hack/5 => les 2 autres extraits de code rapide ne sont pas compatibles avec certains navigateurs comme FF <11)

(function($) {

  var DIV = document.createElement("div"),
      outerHTML;

  if ('outerHTML' in DIV) {
    outerHTML = function(node) {
      return node.outerHTML;
    };
  } else {
    outerHTML = function(node) {
      var div = DIV.cloneNode();
      div.appendChild(node.cloneNode(true));
      return div.innerHTML;
    };
  }

  $.fn.outerHTML = function() {
    return this.length ? outerHTML(this[0]) : void(0);
  };

})(jQuery);

@Andy E => Je ne suis pas d'accord avec toi. uterHMTL n'a pas besoin d'un getter ET d'un setter: jQuery nous donne déjà 'replaceWith' ...

@mindplay => Pourquoi rejoignez-vous tous les externalHTML? jquery.html renvoie uniquement le contenu HTML du premier élément.

(Désolé, je n'ai pas assez de réputation pour écrire des commentaires)

gtournie
la source
2

Court et doux.

[].reduce($('.x'), function(i,v) {return i+v.outerHTML}, '')

ou un événement plus doux avec l'aide des fonctions fléchées

[].reduce.call($('.x'), (i,v) => i+v.outerHTML, '')

ou sans jQuery du tout

[].reduce.call(document.querySelectorAll('.x'), (i,v) => i+v.outerHTML, '')

ou si vous n'aimez pas cette approche, vérifiez que

$('.x').get().reduce((i,v) => i+v.outerHTML, '')
rolacja
la source
2

C'est assez simple avec JavaScript vanille ...

document.querySelector('#selector')
houx
la source
1

Ceci est idéal pour changer des éléments sur le dom mais ne fonctionne PAS pour, par exemple, lors du passage d'une chaîne html en jquery comme ceci:

$('<div id="foo">Some <span id="blog">content</span></div>').find('#blog').outerHTML();

Après quelques manipulations, j'ai créé une fonction qui permet à ce qui précède de fonctionner, par exemple pour les chaînes html:

$.fn.htmlStringOuterHTML = function() {     
    this.parent().find(this).wrap('<div/>');        
    return this.parent().html();
};
inspiraller
la source
1

$.html = el => $("<div>"+el+"</div>").html().trim();

evandrix
la source
0

Je suis tombé sur ce problème en cherchant une réponse à mon problème, à savoir que j'essayais de supprimer une ligne du tableau, puis de l'ajouter à nouveau au bas du tableau (car je créais dynamiquement des lignes de données mais je voulais afficher un `` Ajouter nouveau ''). Enregistrer la ligne de type en bas).

J'ai eu le même problème, car il renvoyait le innerHtml, donc il manquait les balises TR, qui contenaient l'ID de cette ligne et signifiait qu'il était impossible de répéter la procédure.

La réponse que j'ai trouvée est que la remove()fonction jquery retourne en fait l'élément, qu'il supprime, en tant qu'objet. Donc, pour supprimer et rajouter une ligne, c'était aussi simple que cela ...

var a = $("#trRowToRemove").remove();            
$('#tblMyTable').append(a);  

Si vous ne supprimez pas l'objet mais souhaitez le copier ailleurs, utilisez clone()plutôt la fonction.

de poisson
la source
0

Plugin jQuery comme raccourci pour obtenir directement l'élément HTML complet:

jQuery.fn.outerHTML = function () {
    return jQuery('<div />').append(this.eq(0).clone()).html();
};

Et utilisez-le comme ceci: $(".element").outerHTML();

Sky Yip
la source
-2
$("#myNode").parent(x).html(); 

Où 'x' est le numéro de nœud, commençant par 0 comme premier, devrait obtenir le bon nœud que vous voulez, si vous essayez d'en obtenir un spécifique. Si vous avez des nœuds enfants, vous devriez vraiment mettre un identifiant sur celui que vous voulez, cependant, pour se concentrer uniquement sur celui-ci. L'utilisation de cette méthodologie et aucun «x» n'a bien fonctionné pour moi.

vapcguy
la source
1
Les gens votant contre, vous voulez laisser un commentaire? Je fais remonter le code vers le PARENT, puis j'obtiens le HTML du contenu - pas seulement en faisant un .html()sur l'élément donné. CELA FONCTIONNE et j'aimerais une explication de pourquoi il ne fonctionne pas.
vapcguy
-4

Solution simple.

var myself = $('#div').children().parent();
Zeeshan
la source
-12
$("#myTable").parent().html();

Je ne comprends peut-être pas votre question correctement, mais cela obtiendra le code HTML de l'élément parent de l'élément sélectionné.

C'est ça que tu cherches?

inkedmn
la source
25
En fait non, parce que si ce parent a d'autres enfants, il obtiendra également ce code HTML.
David V.
1
...ce qu'il a dit. Je cherche l'élément lui-même, pas lui et tous les autres enfants de ses parents. Comment cela a-t-il obtenu deux votes positifs ???
Ryan