Yanıtlar:
Bence fark neredeyse kendini açıklayıcı. Ve test etmek çok önemli.
jQuery.html()
dizeyi HTML olarak jQuery.text()
ele alır, içeriği metin olarak ele alır
<html>
<head>
<title>Test Page</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$("#div1").html('<a href="example.html">Link</a><b>hello</b>');
$("#div2").text('<a href="example.html">Link</a><b>hello</b>');
});
</script>
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
</body>
</html>
Çok açık olmayan bir fark jQuery API belgelerinde açıklanmıştır
.Html () dokümanlarında :
.html()
Yöntem XML belgelerde kullanılamaz.
Ve .text () belgelerinde :
.html()
Yöntemin aksine,.text()
hem XML hem de HTML belgelerinde kullanılabilir.
$(function() {
$("#div1").html('<a href="example.html">Link</a><b>hello</b>');
$("#div2").text('<a href="example.html">Link</a><b>hello</b>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<div id="div1"></div>
<div id="div2"></div>
((lütfen gerekirse güncelleyin, bu cevap bir Wiki'dir))
.text()
veya .html()
?Cevap: .html()
daha hızlı! Tüm soru için buraya bir "davranış test kiti" bakın .
Sonuç olarak, "sadece bir metin" varsa, html()
yöntemi kullanın .
Not: Mantıklı değil mi? Bu .html()
işlevin yalnızca bir sarıcı olduğunu .innerHTML
, ancak .text()
jQuery işlevinde bir "varlık filtresi" eklediğini ve bu filtrenin doğal olarak zaman harcadığını unutmayın.
Tamam, gerçekten performans istiyorsanız ... Doğrudan Javascript özelliğini kullanarak doğrudan metin yerine erişmek için kullanınnodeValue
. Deney sonuçları:
.html()
~ 2 kat daha hızlıdır .text()
..innerHTML
~ 3x daha hızlıdır .html()
..nodeValue
, ~ 50x daha hızlı .html()
, ~ 100x daha .text()
ve ~ 20x daha .innerHTML
.PS: .textContent
mülkiyet DOM-Level-3 ile tanıtıldı .nodeValue
, DOM-Level-2 ve daha hızlı (!).
Bu tam karşılaştırmaya bakın :
// Using jQuery:
simplecron.restart(); for (var i=1; i<3000; i++)
$("#work").html('BENCHMARK WORK');
var ht = simplecron.duration();
simplecron.restart(); for (var i=1; i<3000; i++)
$("#work").text('BENCHMARK WORK');
alert("JQuery (3000x): \nhtml="+ht+"\ntext="+simplecron.duration());
// Using pure JavaScript only:
simplecron.restart(); for (var i=1; i<3000; i++)
document.getElementById('work').innerHTML = 'BENCHMARK WORK';
ht = simplecron.duration();
simplecron.restart(); for (var i=1; i<3000; i++)
document.getElementById('work').nodeValue = 'BENCHMARK WORK';
alert("Pure JS (3000x):\ninnerHTML="+ht+"\nnodeValue="+simplecron.duration());
nodeValue
özelliği ayarladığınızda , ">" değerini "& lt;", vb. Biçimine dönüştürür
.text()
~ 7 kat daha hızlı görünüyor .html()
). Kaynak kodu: codepen.io/damhonglinh/pen/vGpQEO . 1500 elementle test ettim; .html()
~ 220ms .text()
aldı ve ~ 30ms aldı.
İlk örnek aslında HTML'nin içine div
gömülürken, ikinci örnek, kelimenin tam anlamıyla görüntülenmesi için öğeyle ilgili karakterleri karşılık gelen karakter varlıklarıyla değiştirerek metinden kaçacaktır (yani HTML oluşturulmamış olarak görüntülenecektir ).
.text()
, hepsinin <
yerini alacağı anlamına gelir <
. .html()
Tarayıcı ile bir bağlantı ve bazı kalın metinler .text()
göreceksiniz, tarayıcı ile her şeyi metin olarak görecek ve bir bağlantı veya kalın metin yapamayacaksınız.
text()
Yöntem içine geçirilen herhangi bir HTML varlık-kaçar. text()
Sayfayı görüntüleyen kişiler tarafından görülebilecek HTML kodu eklemek istediğinizde kullanın .
Teknik olarak, ikinci örneğiniz şunları üretir:
<a href="example.html">Link</a><b>hello</b>
tarayıcıda şu şekilde oluşturulur:
<a href="example.html">Link</a><b>hello</b>
İlk örneğiniz gerçek bir bağlantı ve bazı kalın metinler olarak işlenecektir.
Aslında her ikisi de biraz benzer görünüyor ama oldukça farklıdır, kullanımınıza veya neye ulaşmak istediğinize bağlıdır,
.html()
html elemanlarına sahip konteynerlerde çalışmak için kullanın ..text()
genellikle ayrı açma ve kapama etiketlerine sahip öğelerin metnini değiştirmek için kullanın.text()
yöntem form girişlerinde veya komut dosyalarında kullanılamaz.
.val()
girdi veya metin alanı öğeleri için..html()
kod öğesinin değeri için.HTML içeriğini almak .text()
, html etiketlerini html varlıklarına dönüştürür.
.text()
hem XML hem de HTML belgelerinde kullanılabilir..html()
yalnızca html belgeleri içindir.Eylemdeki farklılıkları görmek için jsfiddle'daki bu örneği inceleyin
Hiç kimsenin Siteler Arası betik önleme avantajından daha .text()
fazla .html()
bahsetmediği .text()
gariptir (Diğerleri verilerinden kaçtığını söylemesine rağmen ).
.text()
DOM'da yalnızca kullanıcının görmesi için veri / metin olan verileri güncellemek istediğinizde kullanılması önerilir .
.html()
çoğunlukla bir div içindeki HTML içeriğini almak için kullanılmalıdır.
Değeri basit bir metin olarak görüntülemek istediğinizde .text (…) kullanın.
Değeri html biçimli metin (veya HTML içeriği) olarak görüntülemek istediğinizde .html (…) kullanın.
Metninizin (örn. Giriş denetiminden gelen) HTML'de özel anlamı olan karakterler / etiketler içermediğinden emin olmadığınız zaman kesinlikle .text (...) kullanmalısınız . Bu gerçekten önemlidir çünkü bu, metnin düzgün görüntülenmemesine neden olabilir, ancak istenmeyen bir JS komut dosyası snippet'inin (örneğin, başka bir kullanıcı girişinden gelen) etkinleştirilmesine neden olabilir .
Temel olarak, $ ("# div"). Html içeriği ayarlamak için element.innerHTML ve $ ("# div"). Metin (muhtemelen) element.textContent kullanır.
http://docs.jquery.com/Attributes/html :
Set the html contents of every matched element
http://docs.jquery.com/Attributes/text :
Similar to html(), but escapes HTML (replace "<" and ">" with their HTML
entities).
$ ('. div'). html (val) seçilen tüm öğelerin HTML değerlerini, $ ('. div'). metin (val) seçilen tüm öğelerin metin değerlerini ayarlar.
JQuery.text () için API dokümanları
JQuery.html () için API dokümanları
Sırasıyla Düğüm # textContent ve Element # innerHTML'ye karşılık geldiğini tahmin ediyorum . (Gecko DOM referansları).
Basit anlamda.
html () - iç html (html etiketleri ve metin) almak için.
text () - içeride varsa yalnızca metin almak için (yalnızca metin)
Farklı .html()
bir html olarak değerlendirilir, .text()
metin olarak değerlendirilir . HTML HTML
bloğunu düşünün
<div id="mydiv">
<div class="mydiv">
This is a div container
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
</ul>
a text after ul
</div>
</div>
JS
var out1 = $('#mydiv').html();
var out2 = $('#mydiv').text();
console.log(out1) // This output all the html tag
console.log(out2) // This is output just the text 'This is a div container Link 1 Link 2 a text after ul'
Resim bu bağlantıdan alınmıştır http://api.jquery.com/text/
.text()
HTML etiketleri arasındaki gerçek metni verecektir. Örneğin, p
etiketler arasındaki paragraf metni . Dikkat edilmesi gereken nokta, $
seçicinizle hedeflediğiniz öğedeki tüm metni ve seçilen öğenin alt öğelerindeki tüm metni vermesidir. Birden varsa Yani p
gövde elemanı içindeki metin ile etiket ve bir yapın $(body).text()
, alacağınız tüm tüm paragraflar metin. (Yalnızca metin, p
etiketlerin kendisi değil .)
.html()
size metin ve etiketleri verecektir . Yani $(body).html()
temelde size, tüm sayfa HTML sayfası verecek
.val()
value
gibi bir niteliğe sahip öğeler için çalışır input
. Bir input
alan metin veya HTML yoktur ve dolayısıyla .text()
ve .html()
her ikisi olacak null
için input
elemanlar.
Fark html etiketi eklemek olduğunu düşünüyorum text()
html etiketi işlevsiz
$('#output').html('You are registered'+'<br>' +' '
+ 'Mister'+' ' + name+' ' + sourname ); }
çıktı :
You are registered <br> Mister name sourname
değiştirilmesi text()
ilehtml()
çıktı
You are registered
Mister name sourname
etiket <br>
çalışırhtml()
text()
.
metin işlevi değeri düz metin olarak ayarlar veya alır, aksi takdirde HTML işlevi, değeri değiştirmek veya değiştirmek için değeri HTML etiketi olarak alır veya alır. Sadece içeriği değiştirmek istiyorsanız text () kullanın. Ancak işaretlemeyi değiştirmeniz gerekiyorsa hmtl () kullanmanız gerekir.
Altı yıl sonra benim için kukla bir cevap, aldırma.
text()
yöntem daha hızlı mı ?? Ne kadar?