Seçili öğenin dış HTML'sini al


792

JQuery ile seçilen bir nesnenin HTML almaya çalışıyorum. .html()İşlevin farkındayım ; sorun, seçilen nesne ( .html()yalnızca satır içindeki hücreleri döndürür, bu durumda bir tablo satırı) dahil HTML gerekir olmasıdır .

Etrafı araştırdım ve bir nesne klonlama, yeni oluşturulan bir div, vb, vb ekleyerek birkaç çok 'hackish' türü yöntemleri buldum, ama bu gerçekten kirli görünüyor. Daha iyi bir yol var mı veya jQuery'nin (1.4.2) yeni sürümü herhangi bir outerHtmlişlevsellik sunuyor mu?


89
JQuery böyle bir şey yapmak için araçlara sahip olmak çok çirkin. Buna da ihtiyacım var.
Josef Sábl

9
Bu iş parçacığına başvuru ile bir özellik isteği gönderdim ve ilk yanıt olumlu oldu. bugs.jquery.com/ticket/8142
mindplay.dk

11
Bazı insanları zamanlarının birkaç saniyesini Ulhas Tuscano'nun çözümünü denemekten kurtarmak için işe yaramıyor.
Dave

73
Ah, wth devam ediyor. $('div')[0].outerHTML.
Salman von Abbas

24
@Tuscan $ ("# selectorid") anlamına geliyor. Prop ("outerHTML")
guy mograbi

Yanıtlar:


189

2014 Edit: Soru ve bu cevap 2010 yılındadır. O zamanlar, daha iyi bir çözüm mevcut değildi. Şimdi, diğer yanıtların birçoğu daha iyi: Örneğin Eric Hu's veya Re Capcha's.

Bu sitenin sizin için bir çözümü var gibi görünüyor: jQuery: outerHTML | Yelotofu

jQuery.fn.outerHTML = function(s) {
    return s
        ? this.before(s).remove()
        : jQuery("<p>").append(this.eq(0).clone()).html();
};

4
Bunu gördüm ama bundan kaçınmaya çalışıyordum çünkü hackish gibiydi ve daha iyi bir yol olmalıydı, ama iyi çalışıyor. Teşekkürler.
Ryan

359
$ ('[selector]') [0] .outerHTML
drogon

25
@drogon: outerHTMLFirefox'ta yalnızca sürüm 11'den (Mart 2012) desteklendiğini unutmayın.
Blaise

8
@PavingWays: Firefox'un savunmasında: outerHTMLW3C standardı değil, Microsoft tarafından icat edilen tescilli bir özelliktir. (Eğlenceli gerçek: innerHTMLyalnızca HTML5'ten beri standartlaştırılmıştır )
Blaise

3
saf jsel.outerHTML || document.createElement('div').appendChild( el.cloneNode( true ) ).parentNode.innerHTML
rab

675

Şu anda (5/1/2012), tüm büyük tarayıcıların outerHTML işlevini desteklediğine inanıyorum. Bana öyle geliyor ki bu pasaj yeterli. Şahsen bunu ezberlemeyi tercih ederim:

// 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('');

DÜZENLEME : Temel destek istatistikleri içinelement.outerHTML


14
@SalmanPK FireFox, 2011-11-11 tarihine kadar bu tesisi desteklemedi. bugzilla.mozilla.org/show_bug.cgi?id=92264 3.6'da hâlâ sıkışmış çok sayıda kullanıcı var. Bu aslında bir neden yerel işlevsellik üzerinde jQuery kullanmayı seçti mükemmel bir örnek olduğunu düşünüyorum.
Lucifer Sam

8
@LuciferSam Firefox 3.6 gs.statcounter.com göre ~% 6 küresel pazar payına sahip Ancak, sonuçları filtreleme 3'ün altında (son 6 ay (Aralık '11 -Mayıs '12) ve ABD kendi üst 12 listesinden onu iter için %). Bu makalede , bu makalede FF 3.6 kullanımının Ocak 2012'den sonra önemli ölçüde düştüğünü gösterdiği için seçtim . Bu veriler göz önüne alındığında, geriye dönük uyumluluk konusunda daha basit kod için çözümümün yanındayım.
Eric Hu

4
Daha fazla anlaşamadım. Buradaki doğru cevap, insanların önerdiği diğer şeyler değil. Seçtiğim öğenin tutmak istediğim diğer cevapları tarafından kaybedilen özellikleri var. Cehennem, bu IE'de bile çalışıyor!
Matthew Bonig

Hayır. Firefox 11 13 Mart 2012 tarihine kadar yayınlanmadı (şimdi düzeltildi), yani bu yazı itibariyle bir yıldan az bir süre önce. JQuery'nin avantajlarından biri, eski tarayıcıları desteklemesidir. En az bir yıl desteklemenin makul olduğunu düşünüyorum ve bazı siteler belli ki daha fazla isteyeceklerdir (unutmayın, jQuery IE6'yı destekler).
Matthew Flaschen

7
@EricHu statcounter ayrıca IE8'in küresel tarayıcı paylaşımının% 9,3'üne sahip olduğunu belirtiyor. Ancak bazı web sitelerim% 40'a yakın. Her şey göreceli ve web sitesinden web sitesine büyük ölçüde değişiyor, Firefox 3.6 hala bazı web sitelerimde yaklaşık% 10'luk bir paya sahip. Global pazar payı hiçbir şey ifade etmiyor. Her şey web sitenizin kitlesi ile ilgilidir.
George Reith

343

Bunun için bir işlev üretmeye gerek yok. Sadece şu şekilde yapın:

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

(Tarayıcınızın konsolu bu arada nelerin günlüğe kaydedildiğini gösterecektir. 2009'dan beri en son tarayıcıların çoğunda bu özellik vardır.)

Sihir sonunda budur:

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

Klon, DOM'yi gerçekten rahatsız etmediğiniz anlamına gelir. Bu olmadan çalıştırın ve ptüm köprülerden önce / sonra (bu örnekte) eklenen etiketleri görürsünüz , bu istenmeyen bir durumdur. Yani, evet, kullan .clone().

Çalışma şekli, her aetiketi alır , RAM'de bir klon yapar, petiketlerle sarar , üst öğesini ( petiket anlamına gelir ) alır ve daha sonra onun innerHTMLözelliğini alır .

EDIT : Tavsiye aldı ve divetiketleri pdaha az yazdığı ve aynı şekilde çalıştığı için etiketlere değiştirdi .


82
Neden jQuery ekibi bir outerHtml () yöntemi eklemiyor acaba?
Donny

1
@Derek, önemli değil. İçine bir şey almak için DIV'yi bir sarıcı olarak kullanıyorum.
Volomike

11
.clone () bandı ( '<p>') üst () html ()...; daha kısa
Uğur Gümüşhan

1
Evet, daha az tuşa basar ve aynı efekti elde eder.
Volomike

14
Genel bir çözüm için P yerine DIV kullanmak daha iyidir - tüm öğeler P'ye geçerli HTML olarak sarılamaz.
Blazemonger

149

Ne hakkında prop('outerHTML'):?

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

Ve ayarlamak için:

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

Benim için çalıştı.

Not : Bu, jQuery 1.6'ya eklenir .


4
Diğer cevaplara kıyasla çok düzgün ve küçük kod. S: Bu, diğer yanıtlarda belirtilen dışHTML kısıtlamalarıyla aynı mı? FF <11'de çalışır mı?
MacroMan

3
İyi çalışıyor, bu sadece burada en iyi çözüm olabilir. Tarayıcılar gittikçe, bu dışHTLM kadar uyumlu olmalıdır. Prop () yöntemi temel olarak yalnızca outerHTML özelliğini alıyor.
Tom Tom

2
Bu çözüm daha iyi, ancak Jquery 1.6.1 2011 yılında piyasaya sürüldü. Soru (ve benim cevabım) 2010'dan geldi.
David V.

1
Benim için "$ ('[selector]') [0] .outerHTML;" hiçbir durumda çalışmadı, ancak "$ ('# seçilecek öğe'). prop ('outerHTML');" Evet!
Eduardo Lucio

2
. $ ( '# madde--seçilebilir') attr ( 'outerHTML'); // ** Daha önceki jQuery's için
Meetai.com 3:15

91

JQuery'yi genişletin:

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

Ve şu şekilde kullanın: $("#myTableRow").outerHTML();


8
Bu çözümle ilgili küçük bir sorun: Sarmadan () önce klonlamanız () yapmanız gerekir, aksi takdirde belgede <div> fazla kaydırma işlemini bırakırsınız.
mindplay.dk

1
Teşekkürler, mindplay.dk - Önerinizi dahil etmek için kodu düzenledim .. iyi yakalama. :)
jessica

2
Bunu tersine çevirmeye ne dersiniz: return $('<div>').append(this.clone()).html();Bu sadece biraz daha önemli.
Justin Warkentin

2
Önce dışHTML'yi kontrol etmeli ve bunu destekleyen tarayıcılar için kullanmalısınız
James Westgate

Bu benim gibi jQuery nesnelerini ve .appendTo () ve .append () işlevlerini kullanarak AJAX yanıtlarında HTML oluşturmak isteyen insanlar için harika. .outerHTML, testlerimde gördüğüm örneklerde çalışmaz. Başka biri bunu daha fazla kontrol etmek isteyebilir, ama zamanım yok.
Sean Kendle

43

Arpan'a katılıyorum (13 Aralık 10:59).

Bunu yapma şekli aslında klon kullanmadığınız için bunu yapmanın çok daha iyi bir yoludur. Çocuk öğeleri varsa, klon yöntemi çok zaman alıcıdır ve başka kimse IE aslında outerHTMLözniteliğe sahip olmak umurumda görünmüyordu (evet IE aslında bazı yararlı hileler var kol).

Ama muhtemelen senaryosunu biraz farklı yaratacağım:

$.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;
    }
};

2
Bu benim için mükemmel çalıştı. clone()Ve textarea's ile ilgili bir hata nedeniyle , klon olmayan bir çözüme ihtiyacım vardı ve bu nokta oldu.
Shpigford

5
outerHTMLInternet Explorer'a ek olarak Chrome tarafından desteklendiği için yerel olanları kullanmak için +1 .
Andy E

9
if (! ($ t [0] içinde 'outerHTML')) ('tanrı kahretsin, tarayıcını güncelle');
psiko brm

19

Gerçekten jQuery-esque outerHTML()olmak için, bir alıcı ve ayarlayıcı olmak ve davranışına olabildiğince benzer olmasını isteyebilirsiniz html():

$.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;
}

Çalışma demosu: http://jsfiddle.net/AndyE/WLKAa/

Bu bir bağımsız değişken geçirmeye olanak sağlıyor outerHTMLolabilen,

  • iptal edilebilir bir işlev - function (index, oldOuterHTML) { }- dönüş değerinin öğe için yeni HTML olacağı ( falsedöndürülmedikçe).
  • her öğenin HTML'sinin yerine ayarlanacak bir dize.

Daha fazla bilgi için, için jQuery belgelerine bakın html().


Bu, jQuery çekirdeğine eklenmeli, böylece insanların düşünmesi gerekmez. Benim tek sorum wrap () / unwrap () 'nin clone ()' dan daha iyi mi yoksa daha kötü performans mı olacağı?
IMSoP

1
IMSoP: Genellikle, klon öğenin tüm alt öğelerini ve niteliklerini kopyalamak zorunda olduğu için sarma / açma daha hızlı olacaktır. wrap () yalnızca tek bir öğe oluşturur ve unwrap () onu yok eder, diğer tüm öğeler sadece hareket ettirilir, bu çoğu zaman oldukça hızlı bir işlemdir.
Andy E

16

Get (jQuery nesnesiyle eşleşen DOM öğelerini al) da kullanabilirsiniz .

Örneğin:

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

Genişletme yöntemi olarak:

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

Veya

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

Çoktan seçmeli ve tüm eşleşen öğelerin dış html'sini döndürür.

$('input').outerHTML()

dönüş:

'<input id="input1" type="text"><input id="input2" type="text">'

11

FULL jQuery eklentisini farklı yapmak .outerHTMLiçin aşağıdaki komut dosyasını herhangi bir js dosyasına ekleyin ve başlığınıza jQuery'den sonra ekleyin:

güncelleme Yeni sürüm daha iyi kontrol yanı sıra daha jQuery Seçici dostu hizmet var! :)

;(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);

Bu, yalnızca bir öğenin dışHTML'sini elde etmenizi sağlamakla kalmaz, aynı anda birden çok öğenin Array dönüşünü bile elde etmenizi sağlar! ve her iki jQuery standart stilinde de kullanılabilir:

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

Birden çok eleman için

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

Snippet Örnekleri:


9

ayrıca sadece bu şekilde yapabilirsin

document.getElementById(id).outerHTML

Burada id, aradığınız öğenin kimliği


4
$("#" + id).attr("id")inanılmaz derecede gereksizdir. Bir değişkente zaten kimliğiniz varsa, öğeyi dom'dan almak ve kimlik özelliğini sorgulamak için neden bir jquery seçici kullanıyorsunuz?
Sam Dufel

7

ExternalHTML'nin Firefox üzerinde çalışmasını sağlamak için Jessica'nın çözümünü (Josh tarafından düzenlenen) kullandım. Ancak sorun onun çözümü bir DIV içine sarılmış çünkü benim kod kırılması oldu. Bir kod satırı daha eklemek bu sorunu çözdü.

Aşağıdaki kod, DOM ağacını değiştirmeden outerHTML'yi verir.

$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;
    }
}

Ve şu şekilde kullanın: $ ("# myDiv"). OuterHTML ();

Umarım birisi faydalı bulur!


1
Mindplay'in yorumunda önerdiği gibi .clone'u kullanın
Yarin


4

Senaryo dinamik olarak yeni bir satır ekliyorsa, bunu kullanabilirsiniz:

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

.myrowsınıfının adıdır <tr>. Son satırın bir kopyasını oluşturur ve bunu yeni bir son satır olarak ekler. Bu yöntem IE7'de de çalışır , ancak [0].outerHTMLyöntem ie7'de atamalara izin vermez


3

node.cloneNode () neredeyse bir kesmek gibi görünmüyor. Düğümü klonlayabilir ve istediğiniz herhangi bir üst öğeye ekleyebilir ve ayrıca, örneğin üzerinde düzenli ifadeler çalıştırmak veya DOM'a eklemek, sonra da sözcükleri değiştirmek yerine, tek tek özellikleri manipüle ederek manipüle edebilirsiniz.

Bununla birlikte, bir HTML dizesi temsilini oluşturmak için öğenin nitelikleri üzerinde de yineleme yapabilirsiniz . Herhangi bir externalHTML işlevinin nasıl uygulanacağı muhtemelen bir tane eklemek için jQuery idi.


3

Jessica tarafından güncellenen Volomike çözümünü kullandım. Öğenin var olup olmadığını görmek için bir kontrol ekledim ve olmaması durumunda boş bırakılmasını sağladım.

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

Tabii ki, aşağıdaki gibi kullanın:

$('table#buttons').outerHTML();

3

Https://github.com/darlesson/jquery-outerhtml adresinde iyi bir .outerHTML () seçeneği bulabilirsiniz .

Yalnızca öğenin HTML içeriğini döndüren .html () öğesinin aksine, bu .outerHTML () sürümü seçili öğeyi ve HTML içeriğini döndürür veya .replaceWith () yöntemi olarak değiştirir, ancak değiştirilen HTML'nin tarafından devralınmasına izin veren farkla zincirleme.

Örnekler yukarıdaki URL'de de görülebilir.


2

Josh'un çözümünün sadece tek bir eleman için işe yaradığını unutmayın.

Muhtemelen, "dış" HTML yalnızca tek bir öğeniz olduğunda gerçekten mantıklıdır, ancak HTML öğelerinin bir listesini almanın ve bunları biçimlendirmeye dönüştürmenin mantıklı olduğu durumlar vardır.

Josh'un çözümünü genişleten, bu birden fazla öğeyi ele alacak:

(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);

Düzenleme: Josh'un çözümü ile ilgili başka bir sorun düzeltildi, yukarıdaki yoruma bakın.


1
Çoğu jQuery "getter" yöntemi yalnızca ilk öğe için veri döndürür, bu nedenle bu davranışı eşleştirmek daha anlamlı olur.
Andy E

Sanırım neden bu şekilde çalıştığını açıkça belirtmiştim? Bir elemanlar listeniz olduğunda çirkin / karmaşık kodlar yapar - herhangi bir nedenle sadece ilk elemanın işaretlemesini istiyorsanız, sadece ilk önce seçicinizde kullanın.
mindplay.dk

Elbette, tıpkı birden çok öğenin HTML'sini almak için haritayı herkesin çözümüyle kullanabileceğiniz gibi. Söylediğim tek şey, standart jQuery yöntemlerinin davranışlarıyla eşleşmenin daha tutarlı olmasıdır.
Andy E


2

Bu basit testi dışHTML tokimon çözeltisi (klon olmadan) ve dışHTML2 jessica çözeltisi (klon)

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");

ve kromum (Sürüm 20.0.1132.57 (0)) tarayıcımdaki sonuç

dışHTML: 81ms
dışHTML2: 439ms

ancak yerel externalHTML işlevi olmadan tokimon çözümünü kullanırsak (şimdi hemen hemen her tarayıcıda desteklenmektedir)

aldık

dışHTML: 594ms
dışHTML2: 332ms

ve gerçek dünya örneklerinde daha fazla döngü ve eleman olacak, bu yüzden mükemmel kombinasyon

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

bu nedenle klon yöntemi aslında sarma / açma yönteminden daha hızlıdır
(jquery 1.7.2)


2

İşte jquery için çok optimize edilmiş bir dışHTML eklentisi: ( http://jsperf.com/outerhtml-vs-jquery-clone-hack/5 => Diğer 2 hızlı kod parçacığı FF <11 gibi bazı tarayıcılarla uyumlu değil)

(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 => Size katılmıyorum. outerHMTL bir alıcıya ve bir ayarlayıcıya ihtiyaç duymaz: jQuery zaten bize 'replaceWith' veriyor ...

@mindplay => Neden tüm dışHTML'ye katılıyorsunuz? jquery.html yalnızca İLK öğenin HTML içeriğini döndürür.

(Üzgünüm, yorum yazmak için yeterli üne sahip değilsiniz)


2

Kısa ve güzel.

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

veya ok işlevleri yardımıyla daha tatlı olay

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

veya jQuery olmadan

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

veya bu yaklaşımı beğenmediyseniz,

$('.x').get().reduce((i,v) => i+v.outerHTML, '')


1

Bu, dom üzerindeki öğeleri değiştirmek için mükemmeldir, ancak bir html dizesinde böyle jquery'ye geçerken çalışmaz:

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

Bazı manipülasyon sonra yukarıda yani html dizeleri için çalışmasına izin veren bir işlev oluşturduk:

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


0

Bir tablo satırını kaldırmaya ve sonra tablonun alt kısmına geri eklemeye çalıştığım sorunum için bir cevap ararken buna rastladım (çünkü dinamik olarak veri satırları oluşturuyordum ama bir 'Yeni Ekle' 'Satırını altta kaydedin).

Aynı sorun vardı, bu yüzden innerHtml dönen bu yüzden bu satırın kimliğini tutan ve prosedürü tekrarlamak imkansız olduğu anlamına TR etiketleri eksikti.

Bulduğum cevap, jquery remove()fonksiyonunun aslında bir nesne olarak kaldırdığı öğeyi döndürmesiydi. Yani, bir satırı kaldırmak ve yeniden eklemek bu kadar basitti ...

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

Nesneyi kaldırmıyorsanız ancak başka bir yere kopyalamak istiyorsanız, clone()bunun yerine işlevi kullanın.


0

HTML'nin tamamını doğrudan almak için bir stenografi olarak jQuery eklentisi:

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

Ve şu şekilde kullanın: $(".element").outerHTML();


-2
$("#myNode").parent(x).html(); 

Burada 'x', ilk sayı olarak 0 ile başlayan düğüm numarasıdır, belirli bir tane almaya çalışıyorsanız, istediğiniz doğru düğümü almalıdır. Alt düğümleriniz varsa, gerçekten istediğiniz bir kimliği bir tanesine koymanız gerekir. Bu metodolojiyi kullanmak ve hiçbir 'x' benim için iyi sonuç vermedi.


1
Bunu oy kullanan insanlar yorum bırakmak ister misiniz? Ben kod PARENT yukarı gitmek, sonra içeriğin HTML olsun - sadece .html()verilen öğe üzerinde bir yapıyorum . BU ÇALIŞIYOR ve neden olmadığını açıklamak istiyorum.
vapcguy

-4

Basit çözüm.

var myself = $('#div').children().parent();

-12
$("#myTable").parent().html();

Belki de sorunuzu doğru anlamıyorum, ancak bu seçili öğenin üst öğesinin html'sini alacaktır.

Arkanız bu mu?


25
Aslında hayır, çünkü o ebeveynin başka çocukları varsa o html'yi de alacaktır.
David

1
...o ne dedi. Öğenin kendisini arıyorum, onu ve tüm ebeveynlerinin diğer çocuklarını değil. Bu nasıl iki oy aldı ???
Ryan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.