javascript - .prop() बनाम.attr()




jquery dom (12)

तो jQuery 1.6 में नया फ़ंक्शन prop()

$(selector).click(function(){
    //instead of:
    this.getAttribute('style');
    //do i use:
    $(this).prop('style');
    //or:
    $(this).attr('style');
})

या इस मामले में वे वही काम करते हैं?

और अगर मुझे prop() का उपयोग करने के लिए स्विच करना है, तो अगर मैं 1.6 पर स्विच करता हूं तो सभी पुराने attr() कॉल टूट जाएंगे?

अद्यतन करें

selector = '#id'

$(selector).click(function() {
    //instead of:
    var getAtt = this.getAttribute('style');
    //do i use:
    var thisProp = $(this).prop('style');
    //or:
    var thisAttr = $(this).attr('style');

    console.log(getAtt, thisProp, thisAttr);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<div id='id' style="color: red;background: orange;">test</div>

(यह पहेली भी देखें: http://jsfiddle.net/maniator/JpUF2/ )

कंसोल एक स्ट्रिंग के रूप में getAttribute लॉग करता है, और स्ट्रिंग के रूप में attr , लेकिन एक CSSStyleDeclaration रूप में CSSStyleDeclaration , क्यों? और यह भविष्य में मेरे कोडिंग को कैसे प्रभावित करता है?


1) एक संपत्ति डोम में है; एचटीएमएल में एक विशेषता है जिसे डीओएम में पार्स किया गया है।

2) $ (elem) .attr ("चेक किया गया") (1.6.1+) "चेक किया गया" (स्ट्रिंग) चेकबॉक्स स्थिति के साथ बदल जाएगा

3) $ (elem) .attr ("चेक किया गया") (प्री-1.6) सत्य (बूलियन) चेकबॉक्स स्थिति के साथ बदल गया

  • ज्यादातर हम डीओएम ऑब्जेक्ट के बजाय कस्टम एट्रिब्यूट जैसे उपयोग करना चाहते हैं data-img, data-xyz

  • इसके अलावा checkboxमूल्य का उपयोग hrefकरते समय attr()और prop()डीओएम आउटपुट के साथ चीज को बदलने के साथ-साथ चेकबॉक्स के लिए prop()पूर्ण लिंक originऔर Booleanमूल्य के साथ कुछ अंतर(pre-1.6)

  • हम केवल डीओएम तत्वों को propअन्य के साथ एक्सेस कर सकते हैंundefined

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <title>prop demo</title>
  <style>
    p {
      margin: 20px 0 0;
    }
    b {
      color: blue;
    }
  </style>

</head>

<body>

  <input id="check1" type="checkbox" checked="checked">
  <label for="check1">Check me</label>
  <p></p>

  <script>
    $("input").change(function() {
      var $input = $(this);
      $("p").html(
        ".attr( \"checked\" ): <b>" + $input.attr("checked") + "</b><br>" +
        ".prop( \"checked\" ): <b>" + $input.prop("checked") + "</b><br>" +
        ".is( \":checked\" ): <b>" + $input.is(":checked")) + "</b>";
    }).change();
  </script>

</body>

</html>


एक संपत्ति डोम में है; एचटीएमएल में एक विशेषता है जिसे डीओएम में पार्स किया गया है।

आगे का विवरण

यदि आप कोई विशेषता बदलते हैं, तो परिवर्तन डीओएम में दिखाई देगा (कभी-कभी एक अलग नाम के साथ)।

उदाहरण: किसी टैग की class विशेषता बदलने से DOM में उस टैग की className संपत्ति बदल जाएगी। यदि आपके पास टैग पर कोई विशेषता नहीं है, तो आपके पास अभी भी एक खाली या डिफ़ॉल्ट मान के साथ संबंधित DOM प्रॉपर्टी है।

उदाहरण: जबकि आपके टैग में कोई class विशेषता नहीं है, तो DOM प्रॉपर्टी className खाली स्ट्रिंग मान के साथ मौजूद है।

संपादित करें

यदि आप एक को बदलते हैं, तो दूसरा नियंत्रक द्वारा बदला जाएगा, और इसके विपरीत। यह नियंत्रक jQuery में नहीं है, लेकिन ब्राउज़र के मूल कोड में है।


यह परिवर्तन jQuery के लिए एक लंबा समय आ रहा है। सालों से, वे attr() नामक एक फ़ंक्शन से संतुष्ट हैं जो अधिकतर डोम गुणों को पुनर्प्राप्त करता है, न कि परिणाम से आप अपेक्षा करते हैं। attr() और prop() पृथक्करण को एचटीएमएल विशेषताओं और डीओएम गुणों के बीच कुछ भ्रम को कम करने में मदद करनी चाहिए। $.fn.prop() निर्दिष्ट DOM प्रॉपर्टी को $.fn.attr() , जबकि $.fn.attr() निर्दिष्ट HTML विशेषता को पकड़ता है।

पूरी तरह से समझने के लिए कि वे कैसे काम करते हैं, यहां HTML विशेषताओं और DOM गुणों के बीच अंतर पर विस्तारित स्पष्टीकरण है .:

एचटीएमएल गुण

वाक्य - विन्यास:

<body onload="foo()">

उद्देश्य: ईवेंट, प्रतिपादन और अन्य उद्देश्यों के लिए मार्कअप को इसके साथ जुड़े डेटा की अनुमति देता है।

दृश्य: कक्षा विशेषता यहां शरीर पर दिखाया गया है। यह निम्नलिखित कोड के माध्यम से सुलभ है:

var attr;
attr = document.body.getAttribute("class");
//IE 8 Quirks and below
attr = document.body.getAttribute("className");

स्ट्रिंग फॉर्म में गुण लौटाए जाते हैं और ब्राउज़र से ब्राउज़र पर असंगत हो सकते हैं। हालांकि, वे कुछ स्थितियों में महत्वपूर्ण हो सकते हैं। जैसा कि ऊपर उदाहरण दिया गया है, आईई 8 क्विर्क मोड (और नीचे) विशेषता नाम के बजाय प्राप्त / सेट / निकालने के लिए एक DOM प्रॉपर्टी के नाम की अपेक्षा करता है। यह कई कारणों में से एक है कि अंतर जानने के लिए क्यों महत्वपूर्ण है।

डोम गुण

वाक्य - विन्यास:

document.body.onload = foo;

उद्देश्य: तत्व नोड्स से संबंधित गुणों तक पहुंच प्रदान करता है। ये गुण विशेषता के समान हैं, लेकिन केवल जावास्क्रिप्ट के माध्यम से सुलभ हैं। यह एक महत्वपूर्ण अंतर है जो डीओएम गुणों की भूमिका को स्पष्ट करने में मदद करता है। कृपया ध्यान दें कि गुण गुणों से पूरी तरह से अलग हैं , क्योंकि इस ईवेंट हैंडलर असाइनमेंट बेकार है और ईवेंट प्राप्त नहीं होगा (शरीर में एक अधिभार ईवेंट नहीं है, केवल एक अधिभार विशेषता है)।

दृश्य:

यहां, आप फायरबग में "DOM" टैब के अंतर्गत गुणों की एक सूची देखेंगे। ये डोम गुण हैं। आप तुरंत उनमें से कुछ को नोटिस करेंगे, क्योंकि आप इसे जानने के बिना पहले इस्तेमाल करेंगे। उनके मूल्य वे हैं जो आप जावास्क्रिप्ट के माध्यम से प्राप्त करेंगे।

प्रलेखन

उदाहरण

एचटीएमएल: <textarea id="test" value="foo"></textarea>

जावास्क्रिप्ट: alert($('#test').attr('value'));

JQuery के पुराने संस्करणों में, यह एक खाली स्ट्रिंग देता है। 1.6 में, यह उचित मान देता है, foo

किसी भी समारोह के लिए नए कोड पर नज़र डाले बिना, मैं आत्मविश्वास से कह सकता हूं कि कोड के मुकाबले एचटीएमएल विशेषताओं और डीओएम गुणों के बीच अंतर के साथ भ्रम का अधिक संबंध है। उम्मीद है कि, यह आपके लिए कुछ चीजों को मंजूरी दे दी है।

-मैट


यह सिर्फ एचटीएमएल विशेषताओं और डीओएम ऑब्जेक्ट्स के बीच भेद है जो भ्रम पैदा करता है। उन लोगों के लिए जो डीओएम तत्वों पर अभिनय कर रहे हैं, मूल गुणों जैसे कि this.value this.checked आदि, .prop परिवार के लिए बहुत गर्मजोशी से स्वागत है। दूसरों के लिए, यह सिर्फ भ्रम की एक अतिरिक्त परत है। आइए इसे साफ़ करें।

.attr और .prop बीच अंतर देखने का सबसे आसान तरीका निम्न उदाहरण है:

<input blah="hello">
  1. $('input').attr('blah') : अपेक्षित के रूप में 'hello' देता है। यहां कोई आश्चर्य नहीं है।
  2. $('input').prop('blah') : undefined लौटाता है - क्योंकि यह [HTMLInputElement].blah करने की कोशिश कर रहा है - और उस DOM ऑब्जेक्ट पर ऐसी कोई भी संपत्ति मौजूद नहीं है। यह केवल उस तत्व की विशेषता के रूप में दायरे में मौजूद है अर्थात [HTMLInputElement].getAttribute('blah')

अब हम कुछ चीजें बदलते हैं:

$('input').attr('blah', 'apple');
$('input').prop('blah', 'pear');
  1. $('input').attr('blah') : 'apple' एह? क्यों नहीं "नाशपाती" क्योंकि यह उस तत्व पर आखिरी बार सेट किया गया था। चूंकि संपत्ति इनपुट विशेषता पर संपत्ति बदल दी गई थी, न कि डीओएम इनपुट तत्व स्वयं - वे मूल रूप से लगभग एक-दूसरे से स्वतंत्र रूप से काम करते हैं।
  2. $('input').prop('blah') : 'pear'

जिस चीज़ को आपको वास्तव में सावधान रहने की आवश्यकता है, वह उपर्युक्त कारण के लिए अपने आवेदन के दौरान इन संपत्तियों के उपयोग को समान रूप से उपयोग न करें

अंतर का प्रदर्शन करने वाली एक पहेली देखें: http://jsfiddle.net/garreh/uLQXc/

.attr बनाम .prop :

दौर 1: शैली

<input style="font:arial;"/>
  • .attr('style') - मिलान किए गए तत्व यानी "font:arial;" लिए इनलाइन शैलियों को लौटाता है
  • .prop('style') - एक स्टाइल घोषणा ऑब्जेक्ट यानी CSSStyleDeclaration

दौर 2: मूल्य

<input value="hello" type="text"/>   

$('input').prop('value', 'i changed the value');
  • .attr('value') - रिटर्न 'hello' *
  • .prop('value') - रिटर्न 'i changed the value'

* नोट: इस कारण के लिए jQuery में एक .val() विधि है, जो आंतरिक रूप से .prop('value') बराबर है।


.attr() :

  • मिलान किए गए तत्वों के सेट में पहले तत्व के लिए एक विशेषता का मान प्राप्त करें।
  • आपको तत्व का मूल्य देता है क्योंकि यह पृष्ठ लोड पर एचटीएमएल में परिभाषित किया गया था

.prop() :

  • मिलान किए गए तत्वों के सेट में पहले तत्व के लिए किसी प्रॉपर्टी का मान प्राप्त करें ।
  • जावास्क्रिप्ट / jquery के माध्यम से संशोधित तत्वों के अद्यतन मान देता है

attributes -> एचटीएमएल

properties -> डोम


1 नवंबर 2012 अपडेट करें

मेरा मूल उत्तर विशेष रूप से jQuery 1.6 पर लागू होता है। मेरी सलाह वही रहती है लेकिन jQuery 1.6.1 ने चीजों को थोड़ा बदल दिया: टूटी हुई वेबसाइटों की अनुमानित ढेर के चेहरे में, jQuery टीम ने attr() को कुछ (जो वास्तव में वही नहीं किया) के लिए बुलीयन विशेषताओं के लिए अपने पुराने व्यवहार को वापस कर दिया । जॉन रेजिग ने इसके बारे में भी ब्लॉग किया । मैं उस कठिनाई को देख सकता हूं जिसमें वे थे लेकिन अभी भी attr() को पसंद करने की उनकी सिफारिश से असहमत हैं।

मूल उत्तर

यदि आपने कभी भी jQuery का उपयोग किया है और सीधे डीओएम नहीं किया है, तो यह एक भ्रमित परिवर्तन हो सकता है, हालांकि यह निश्चित रूप से अवधारणात्मक रूप से एक सुधार है। JQuery का उपयोग कर साइटों के बैजिलियन के लिए इतना अच्छा नहीं है जो इस परिवर्तन के परिणामस्वरूप टूट जाएगा।

मैं मुख्य मुद्दों का सारांश दूंगा:

  • आप आमतौर पर attr() बजाय prop() चाहते हैं।
  • अधिकांश मामलों में, prop() करता है जो attr() करता था। अपने कोड में prop() attr() साथ attr() को कॉल को प्रतिस्थापित करना आम तौर पर काम करेगा।
  • विशेषताओं से निपटने के लिए गुण आमतौर पर सरल होते हैं। एक विशेषता मान केवल एक स्ट्रिंग हो सकता है जबकि एक संपत्ति किसी भी प्रकार का हो सकती है। उदाहरण के लिए, checked की checked संपत्ति एक बूलियन है, style संपत्ति प्रत्येक शैली के लिए अलग-अलग गुणों वाला एक ऑब्जेक्ट है, size संपत्ति एक संख्या है।
  • जहां एक ही नाम और एक ही नाम के साथ एक विशेषता मौजूद है, आमतौर पर एक अपडेट करने से दूसरे को अपडेट किया जाएगा, लेकिन यह इनपुट के कुछ विशेषताओं जैसे कि value और checked लिए मामला नहीं checked : इन विशेषताओं के लिए, संपत्ति हमेशा वर्तमान स्थिति का प्रतिनिधित्व करती है जबकि विशेषता (IE के पुराने संस्करणों को छोड़कर) इनपुट के डिफ़ॉल्ट मान / चेकनेस से मेल खाती है (डिफ़ॉल्ट वैल्यू / डिफ़ॉल्ट defaultChecked प्रॉपर्टी में दिखाई देती है)।
  • यह परिवर्तन गुणों और गुणों के सामने फंसे जादू की कुछ परत को हटा देता है, जिसका अर्थ है कि jQuery डेवलपर्स को गुणों और विशेषताओं के बीच अंतर के बारे में कुछ सीखना होगा। यह एक अच्छी बात है।

यदि आप एक jQuery डेवलपर हैं और इस पूरे व्यवसाय द्वारा गुणों और विशेषताओं के बारे में उलझन में हैं, तो आपको एक कदम वापस लेने और इसके बारे में कुछ सीखने की आवश्यकता है, क्योंकि jQuery अब इस सामग्री से आपको ढालने के लिए इतना कठिन प्रयास नहीं कर रहा है। विषय पर आधिकारिक लेकिन कुछ हद तक शुष्क शब्द के लिए, चश्मा हैं: डोम DOM4 , एचटीएमएल डोम , डोम लेवल 2 , डोम लेवल 3 । मोज़िला का डीओएम दस्तावेज अधिकांश आधुनिक ब्राउज़रों के लिए मान्य है और चश्मा की तुलना में पढ़ना आसान है, इसलिए आप उनके डीओएम संदर्भ उपयोगी पा सकते हैं। तत्व गुणों पर एक अनुभाग है

गुणों के मुकाबले संपत्तियों का निपटारा करने के लिए गुणों के उदाहरण के रूप में, प्रारंभ में चेक किए गए चेकबॉक्स पर विचार करें। ऐसा करने के लिए वैध HTML के दो संभावित टुकड़े यहां दिए गए हैं:

<input id="cb" type="checkbox" checked>
<input id="cb" type="checkbox" checked="checked">

तो, आप कैसे पता लगा सकते हैं कि चेकबॉक्स को jQuery के साथ चेक किया गया है या नहीं? स्टैक ओवरफ़्लो को देखें और आपको आमतौर पर निम्नलिखित सुझाव मिलेंगे:

  • if ( $("#cb").attr("checked") === true ) {...}
  • if ( $("#cb").attr("checked") == "checked" ) {...}
  • if ( $("#cb").is(":checked") ) {...}

यह वास्तव में checked की checked बूलियन संपत्ति के साथ दुनिया में सबसे सरल बात है, जो अस्तित्व में है और 1 99 5 से हर प्रमुख पटकथा ब्राउज़र में बेकार ढंग से काम करती है:

if (document.getElementById("cb").checked) {...}

संपत्ति चेकबॉक्स को जांचने या अनचेक करने के लिए भी बनाता है:

document.getElementById("cb").checked = false

JQuery 1.6 में, यह स्पष्ट रूप से बन जाता है

$("#cb").prop("checked", false)

एक चेकबॉक्स पटकथा के लिए checked गुण का उपयोग करने का विचार असहनीय और अनावश्यक है। संपत्ति आपको चाहिए।

  • यह स्पष्ट नहीं है कि चेकबॉक्स को चेक या अनचेक करने का सही तरीका चेक checked विशेषता का उपयोग कर रहा checked
  • विशेषता मान वर्तमान दृश्य स्थिति के बजाय डिफ़ॉल्ट को प्रतिबिंबित करता है (IE के कुछ पुराने संस्करणों को छोड़कर, इस प्रकार चीजों को अभी भी कठिन बनाते हैं)। विशेषता आपको इस बारे में कुछ नहीं बताती है कि पृष्ठ पर चेकबॉक्स चेक किया गया है या नहीं। http://jsfiddle.net/VktA6/49/ देखें।

गंदे चेकनेस

यह अवधारणा एक उदाहरण प्रदान करती है जहां अंतर देखने योग्य है: http://www.w3.org/TR/html5/forms.html#concept-input-checked-dirty

कोशिश करके देखो:

  • बटन को क्लिक करे। दोनों चेकबॉक्स चेक हो गए।
  • दोनों चेकबॉक्स अनचेक करें।
  • बटन फिर से क्लिक करें। केवल prop चेकबॉक्स चेक किया गया है। बैंग

$('button').on('click', function() {
  $('#attr').attr('checked', 'checked')
  $('#prop').prop('checked', true)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>attr <input id="attr" type="checkbox"></label>
<label>prop <input id="prop" type="checkbox"></label>
<button type="button">Set checked attr and prop.</button>

button पर disabled जैसे कुछ विशेषताओं के लिए, सामग्री विशेषता को जोड़ने या निकालने के लिए disabled="disabled" हमेशा संपत्ति को टॉगल करता है (जिसे HTML5 में आईडीएल विशेषता कहा जाता है) क्योंकि http://www.w3.org/TR/html5/forms.html#attr-fe-disabled कहते हैं:

अक्षम आईडीएल विशेषता अक्षम सामग्री विशेषता को प्रतिबिंबित करनी चाहिए।

इसलिए आप इससे दूर हो सकते हैं, हालांकि यह बदसूरत है क्योंकि यह बिना किसी आवश्यकता के HTML को संशोधित करता है।

input type="checkbox" checked="checked" पर checked="checked" जैसे अन्य विशेषताओं के लिए, चीजें तोड़ती हैं, क्योंकि एक बार जब आप इसे क्लिक करते हैं, तो यह गंदा हो जाता है, और फिर checked="checked" सामग्री विशेषता को जोड़ना या निकालना अब checked="checked" को टॉगल नहीं करता है

यही कारण है कि आपको अधिकतर .prop उपयोग करना चाहिए, क्योंकि यह HTML को संशोधित करने के जटिल साइड-इफेक्ट्स पर निर्भर होने के बजाय सीधे प्रभावी संपत्ति को प्रभावित करता है।


विशेषताएं आपके HTML टेक्स्ट दस्तावेज़ / फ़ाइल में हैं (== कल्पना करें कि यह आपके एचटीएमएल मार्कअप का परिणाम है), जबकि
गुण एचटीएमएल डोम पेड़ में हैं (== मूल रूप से जेएस भावना में कुछ वस्तु की वास्तविक संपत्ति)।

महत्वपूर्ण बात यह है कि उनमें से कई सिंक हो गए हैं (यदि आप class संपत्ति अपडेट करते हैं, तो एचटीएमएल में class एट्रिब्यूट भी अपडेट किया जाएगा; और अन्यथा)। लेकिन कुछ विशेषताओं को अप्रत्याशित गुणों के साथ समन्वयित किया जा सकता है - उदाहरण के लिए, checked विशेषता संपत्ति defaultChecked से मेल खाती है, इसलिए

  • मैन्युअल रूप से चेकबॉक्स को चेक करना .prop('checked') मान बदल देगा, लेकिन .attr('checked') और .prop('defaultChecked') मानों को नहीं बदलेगा।
  • $('#input').prop('defaultChecked', true) .attr('checked') भी बदल .attr('checked') , लेकिन यह किसी तत्व पर दिखाई नहीं देगा।

अंगूठे का नियम है : .prop() विधि को बूलियन विशेषताओं / गुणों के लिए और उन गुणों के लिए उपयोग किया जाना चाहिए जो HTML (जैसे window.location) में मौजूद नहीं हैं। अन्य सभी विशेषताओं (जिन्हें आप HTML में देख सकते हैं) .attr() विधि के साथ छेड़छाड़ कर सकते हैं और जारी रखना चाहिए। ( http://blog.jquery.com/2011/05/10/jquery-1-6-1-rc-1-released/ )

और यहां एक सारणी है जो दिखाती है कि .prop() को प्राथमिकता दी जाती है (भले ही .attr() अभी भी उपयोग किया जा सके)।

आप कभी-कभी .attr () के बजाय .prop () का उपयोग क्यों करना चाहते हैं, जहां बाद में आधिकारिक तौर पर सलाह दी जाती है?

  1. .prop() किसी भी प्रकार - स्ट्रिंग, पूर्णांक, बूलियन वापस कर सकते हैं; जबकि .attr() हमेशा एक स्ट्रिंग देता है।
  2. .prop() को .prop() से लगभग 2.5 गुना तेज कहा जाता है।

jQuery 1.6 .prop () फ़ंक्शन को प्रस्तुत करता है और DOM गुणों और गुणों को अलग करता है, इसने .attr और .prop फ़ंक्शंस के बीच के अंतर के बारे में बहुत सारे प्रश्न उठाए हैं।

उदाहरण नीचे देखें:

उदाहरण 1)

<input id="demo" type="text" dbvalue="Kansagara" />

$("#demo").attr("dbvalue");   // returns Kansagara
$("#demo").prop("dbvalue");   // returns undefined

.prop () केवल HTML DOM विशेषता का मान देता है, यह कस्टम विशेषता का मान वापस नहीं करता है जबकि .attr () ऊपर दिखाए गए कस्टम विशेषता मान भी लौटाता है।

उदाहरण: 2)

<input id="demo" type="text" value="Kansagara" />

अब, मैंने टेक्स्ट 'कंसगारा' को टेक्स्टबॉक्स में 'हितेश' में बदल दिया है।

$("#demo").attr("value");   // returns Kansagara
$("#demo").prop("value");   // returns Hitesh

अब आपको पता चला है कि इसका क्या अर्थ है। केवल तत्व की संपत्ति बदल दी गई है, क्योंकि यह डोम और गतिशील में है। लेकिन तत्व की विशेषता HTML पाठ में है और इसे बदला नहीं जा सकता है। व्यापक रूप से, संपत्ति हमेशा वर्तमान स्थिति का प्रतिनिधित्व करती है जबकि विशेषता (आईई के पुराने संस्करणों को छोड़कर) प्रारंभिक स्थिति का प्रतिनिधित्व करती है या HTML विशेषताओं के लिए इसका मतलब है क्योंकि उन्हें सख्ती से परिभाषित किया जाता है। विशेषता आपको वर्तमान स्थिति के बारे में कुछ भी नहीं बताती है।

चेकबॉक्स के लिए (jquery 1.6+)

<input id="check1" checked="checked" type="checkbox" />

.attr('checked') //returns  checked
.prop('checked') //returns  true
.is(':checked') //returns true

प्रोप विधि चेक, चयनित, अक्षम, केवल पढ़ने के लिए बूलियन मान देता है जबकि attr परिभाषित स्ट्रिंग देता है। तो, यदि आप स्थिति में सीधे .prop ('चेक') का उपयोग कर सकते हैं।

.attr () कॉल .prop () आंतरिक रूप से .attr () विधि सीधे .prop () के माध्यम से उन्हें एक्सेस करने से थोड़ा धीमा हो जाएगा।

JQuery 1.6+ के लिए, प्रोप का अधिकतर उपयोग किया जाएगा क्योंकि यह एटीआर से सरल और व्यापक है। अधिकांश पुरानी परियोजनाओं में, तत्व की वर्तमान स्थिति की जानकारी प्राप्त करने के लिए एटीआर का उपयोग किया जाता है। लेकिन अब प्रोप ने यह काम लिया है और एटीआर को प्रोप के साथ बदल दिया जाएगा।

आशा करता हूँ की ये काम करेगा।


JQuery 1.6 से पहले, गुणों को पुनर्प्राप्त करते समयattr() विधि कभी-कभी संपत्ति मूल्यों को ध्यान में रखती थी, इससे असंगत व्यवहार होता था।

prop()विधि का परिचय .attr()गुणों को पुनर्प्राप्त करते समय संपत्ति मूल्यों को स्पष्ट रूप से पुनर्प्राप्त करने का एक तरीका प्रदान करता है ।

डॉक्स:

jQuery.attr() मिलान किए गए तत्वों के सेट में पहले तत्व के लिए एक विशेषता का मान प्राप्त करें।

jQuery.prop() मिलान किए गए तत्वों के सेट में पहले तत्व के लिए किसी प्रॉपर्टी का मान प्राप्त करें।


आमतौर पर आप गुणों का उपयोग करना चाहते हैं। केवल गुणों का उपयोग करें:

  1. कस्टम HTML विशेषता प्राप्त करना (क्योंकि यह किसी DOM प्रॉपर्टी के साथ समन्वयित नहीं है)।
  2. एक HTML विशेषता प्राप्त करना जो किसी DOM प्रॉपर्टी से सिंक नहीं होता है, उदाहरण के लिए मानक HTML विशेषता का "मूल मान" प्राप्त करें, जैसे <input value="abc">.






prop