जवाबों:
मुझे लगता है कि अंतर लगभग स्व-व्याख्यात्मक है। और यह परीक्षण करने के लिए सुपर तुच्छ है।
jQuery.html()
HTML के रूप में स्ट्रिंग jQuery.text()
व्यवहार करता है, सामग्री को पाठ के रूप में मानता है
<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>
एक अंतर जो इतना स्पष्ट नहीं हो सकता है वह jQuery एपीआई प्रलेखन में वर्णित है
.html()
विधि एक्सएमएल दस्तावेजों में उपलब्ध नहीं है।
और .text के प्रलेखन में :
.html()
विधि के विपरीत ,.text()
XML और HTML दोनों दस्तावेजों में उपयोग किया जा सकता है।
$(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>
((यदि आवश्यक हो तो अपडेट करें, यह उत्तर एक विकी है)
.text()
या .html()
?उत्तर: .html()
तेज है! सभी प्रश्नों के लिए यहां "व्यवहार परीक्षण-किट" देखें ।
इसलिए, निष्कर्ष में, यदि आपके पास "केवल एक पाठ" है, तो html()
विधि का उपयोग करें ।
नोट: कोई मतलब नहीं है? याद रखें कि .html()
फ़ंक्शन केवल एक आवरण है .innerHTML
, लेकिन .text()
फ़ंक्शन में jQuery एक "एंटिटी फ़िल्टर" जोड़ता है , और यह फ़िल्टर स्वाभाविक रूप से समय लेता है।
ठीक है, यदि आप वास्तव में प्रदर्शन चाहते हैं ... संपत्ति द्वारा प्रत्यक्ष पाठ-प्रतिस्थापन तक पहुंचने के लिए शुद्ध जावास्क्रिप्ट का उपयोग करेंnodeValue
। बेंचमार्क निष्कर्ष:
.html()
~ 2x से अधिक तेज है .text()
।.innerHTML
~ से 3x तेज है .html()
।.nodeValue
~ से 50x तेज है .html()
, ~ 100x से .text()
, और ~ 20x से अधिक है .innerHTML
।पुनश्च: .textContent
संपत्ति DOM-Level-3 के साथ पेश की गई थी, .nodeValue
DOM-Level-2 है और तेज (!) है।
देखें यह पूरा बेंचमार्क :
// 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
संपत्ति सेट करते हैं तो @ScottSimontis , "" "को" & lt; ", आदि में बदल देती है
.text()
लगता है ~ ~ 7x से भी तेज .html()
)। स्रोत कोड: codepen.io/damhonglinh/pen/vGpQEO । मैंने 1500 तत्वों के साथ परीक्षण किया; .html()
~ 220ms .text()
लिया और ~ 30ms लिया।
पहला उदाहरण वास्तव में HTML को एम्बेड करेगा, div
जबकि दूसरा उदाहरण अपने संबंधित वर्ण संस्थाओं के साथ तत्व से संबंधित वर्णों को बदलने के माध्यम से पाठ से बच जाएगा ताकि यह शाब्दिक रूप से प्रदर्शित हो (अर्थात HTML प्रदर्शित नहीं किया जाएगा)।
.text()
फ़ंक्शन में, सभी <
को बदल दिया जाएगा <
। तो .html()
ब्राउज़र के साथ एक लिंक और कुछ बोल्ड टेक्स्ट .text()
दिखाई देंगे, ब्राउज़र के साथ सब कुछ टेक्स्ट के रूप में दिखाई देगा और लिंक या बोल्ड टेक्स्ट नहीं बनाएंगे।
text()
विधि किसी भी HTML है कि यह में पारित हो जाता इकाई-निकल जाता है। का प्रयोग करें text()
आप HTML कोड है कि जो लोग पेज देखने पर दिखाई जाएगी सम्मिलित करना चाहते हैं जब।
तकनीकी रूप से, आपका दूसरा उदाहरण प्रस्तुत करता है:
<a href="example.html">Link</a><b>hello</b>
जिसे ब्राउज़र में प्रस्तुत किया जाएगा:
<a href="example.html">Link</a><b>hello</b>
आपका पहला उदाहरण एक वास्तविक लिंक और कुछ बोल्ड टेक्स्ट के रूप में प्रस्तुत किया जाएगा।
वास्तव में दोनों कुछ समान दिखते हैं लेकिन काफी भिन्न हैं यह आपके उपयोग या इरादे पर निर्भर करता है कि आप क्या हासिल करना चाहते हैं,
.html()
html तत्वों वाले कंटेनरों पर काम करने के लिए उपयोग करें।.text()
आमतौर पर अलग-अलग खुले और समापन टैग वाले तत्वों के पाठ को संशोधित करने के लिए उपयोग करें.text()
विधि का उपयोग फॉर्म इनपुट या स्क्रिप्ट पर नहीं किया जा सकता है।
.val()
इनपुट या टेक्स्टारिया तत्वों के लिए।.html()
एक स्क्रिप्ट तत्व के मूल्य के लिए।HTML सामग्री चुनने से .text()
html टैग HTML संस्थाओं में परिवर्तित हो जाएंगे।
.text()
XML और HTML दोनों दस्तावेजों में इस्तेमाल किया जा सकता है।.html()
केवल html दस्तावेजों के लिए है।कार्रवाई में अंतर देखने के लिए jsfiddle पर इस उदाहरण की जांच करें
अजीब कोई की क्रॉस साइट स्क्रिप्टिंग रोकथाम लाभ उल्लेख किया है कि .text()
अधिक .html()
(हालांकि दूसरों उल्लेख किया है कि .text()
डेटा निकल जाता है)।
.text()
जब आप DOM में डेटा अपडेट करना चाहते हैं तो इसका उपयोग करने के लिए हमेशा अनुशंसा की जाती है जो उपयोगकर्ता के लिए केवल डेटा / टेक्स्ट है।
.html()
ज्यादातर एक div के भीतर HTML सामग्री प्राप्त करने के लिए इस्तेमाल किया जाना चाहिए।
जब आप एक साधारण पाठ के रूप में मान प्रदर्शित करने का इरादा रखते हैं तो .text (…) का उपयोग करें।
जब आप HTML स्वरूपित पाठ (या HTML सामग्री) के रूप में मान प्रदर्शित करने का इरादा रखते हैं तो .html (…) का उपयोग करें।
आपको निश्चित रूप से .text (...) का उपयोग करना चाहिए, जब आप सुनिश्चित नहीं होते हैं कि आपके पाठ (जैसे इनपुट नियंत्रण से आने वाले) में वे वर्ण / टैग शामिल नहीं हैं जिनका HTML में विशेष अर्थ है। यह वास्तव में महत्वपूर्ण है क्योंकि इससे पाठ का परिणाम ठीक से प्रदर्शित नहीं होगा, लेकिन यह भी एक अवांछित JS स्क्रिप्ट स्निपेट (जैसे किसी अन्य उपयोगकर्ता इनपुट से आने वाला) सक्रिय होने का कारण हो सकता है ।
मूल रूप से, $ ("# div")। html सामग्री का उपयोग करने के लिए element.innerHTML का उपयोग करता है, और $ ("# div")। पाठ (शायद) element.textContent का उपयोग करता है।
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 (वैल) सभी चयनित तत्वों के HTML मानों को सेट करेगा, $ ('div'))। पाठ (वैल) सभी चयनित तत्वों के पाठ मूल्यों को निर्धारित करेगा।
JQuery.text के लिए एपीआई डॉक्स ()
JQuery.html के लिए एपीआई डॉक्स ()
मुझे लगता है कि वे क्रमशः # पाठ और तत्व # आंतरिक HTML के अनुरूप हैं। (गेको डोम संदर्भ)।
अच्छी तरह से सरल शब्द में।
html () - इनर html (html टैग और टेक्स्ट) पाने के लिए।
पाठ () - केवल पाठ प्राप्त करने के लिए अगर अंदर मौजूद है (केवल पाठ)
अलग .html()
HTML के रूप में मूल्यांकन किया जाता है, .text()
एक पाठ के रूप में मूल्यांकन किया जाता है ।
HTML HTML के एक ब्लॉक पर विचार करें
<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>
जे एस
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'
चित्रण इस लिंक http://api.jquery.com/text/ से है
.text()
आपको HTML टैग्स के बीच में वास्तविक टेक्स्ट देगा। उदाहरण के लिए, p
टैग के बीच पैराग्राफ पाठ । यह ध्यान रखना दिलचस्प है कि यह आपको उस तत्व के सभी पाठ देगा जो आप अपने $
चयनकर्ता के साथ लक्षित कर रहे हैं और साथ ही उस चयनित तत्व के बच्चों के तत्वों के सभी पाठ भी। तो आप एक से अधिक है, तो p
शरीर तत्व के अंदर पाठ के साथ टैग और आप एक कर $(body).text()
, आप मिल जाएगा सब सब पैराग्राफ से पाठ। (केवल पाठ, p
स्वयं टैग नहीं ।)
.html()
आपको पाठ और टैग देगा। तो $(body).html()
मूल रूप से आप अपने पूरे पृष्ठ HTML पेज दे देंगे
.val()
उन तत्वों के लिए काम करता है जिनमें एक value
विशेषता है, जैसे कि input
। एक input
निहित पाठ या HTML नहीं है और इस प्रकार .text()
और .html()
दोनों हो जाएगा null
के लिए input
तत्वों।
मुझे लगता है कि अंतर यह है कि html टैग को text()
आप में सम्मिलित करना है html टैग कार्य नहीं करता है
$('#output').html('You are registered'+'<br>' +' '
+ 'Mister'+' ' + name+' ' + sourname ); }
आउटपुट:
You are registered <br> Mister name sourname
के text()
साथ बदल रहा हैhtml()
उत्पादन
You are registered
Mister name sourname
फिर टैग <br>
काम करता हैhtml()
text()
।
पाठ फ़ंक्शन सेट या मान को सादे पाठ के रूप में प्राप्त करता है, अन्यथा, HTML फ़ंक्शन सेट करता है या इसे बदलने या संशोधित करने के लिए HTML टैग के रूप में मान प्राप्त करता है। यदि आप सामग्री बदलना चाहते हैं तो पाठ () का उपयोग करें। लेकिन अगर आपको मार्कअप बदलने की आवश्यकता है तो आपको एचएमटीएल () का उपयोग करना होगा।
यह मेरे लिए छह साल बाद एक बुरा जवाब है, बुरा मत मानना।
text()
विधि तेज है ?? कितना?