मैं jQuery के बहुत पुराने संस्करणों (1.2.6, 1.4.3) से नवीनतम पर काम पर बड़ी संख्या में साइटों को अपग्रेड करने का प्रयास कर रहा हूं संस्करण (1.9.1)। चीजें बहुत अच्छी तरह से चल रही हैं - माइग्रेशन स्क्रिप्ट अधिकांश लेगवर्क करता है, भले ही यह केवल 1.6.4 से 1.9.1 के लिए है, मुझे लगता है कि मुझे अन्य बदलावों की आवश्यकता है जो सॉर्टिंग की आवश्यकता है।jQuery अपग्रेड, .attr और .prop - 1.2.6 से 1.9.1
वहाँ मैं मुख्य एक .attr()
से .prop()
में परिवर्तन होने के साथ हालांकि आई है, मुद्दों के एक जोड़े है - का उपयोग करता है के रूप में हमारे कोड के सभी .attr()
और कुछ टूट जाता है, तो हम सिर्फ) .prop उपयोग करने के लिए (यह बदलने के लिए, विशेष रूप से कुछ लिंक जो स्टोर में उत्पादों को फ़िल्टर करने के लिए उपयोग किए जाते हैं - ये AJAX कॉल का आह्वान करते हैं और क्लिक होने पर अन्य प्रसंस्करण करते हैं।
मेरे प्रारंभिक "ठीक" (बहुत बड़ी एयर उद्धरण में) बस पुनः निर्देशित कॉल एक से दूसरे पर आधारित था:
$.fn.attr = $.fn.prop;
मुझे यकीन है कि इस कीड़े की एक पूरी दुनिया का परिचय है, यह हालांकि हूँ तय किया गया जो शुरू में टूटा हुआ था। तब से, मैंने केवल इसके बाद एक और बग देखा है (अब तक, वैसे भी), जो कि पूर्ण सामान्यीकृत यूआरएल - http://jsfiddle.net/eT6xE/1/
लौटने के लिए यह href विशेषता (जो # में शुरू होने वाला एंकर हो सकता है) का कारण बनता है।<a href="#something"><span>Product Details</span></a>
<div></div>
$('div').append($('a').attr('href'));
$('div').append('<br />' + $('a').prop('href'));
// #something \n http://fiddle.jshell.net/eT6xE/1/show/#something
यह देखते हुए कि यह एकमात्र बग है जिसे मैंने देखा है, मैंने थोड़ा सा खेला है और इसके लिए एक वर्कअराउंड के साथ आया है - http://jsfiddle.net/M92CE/1/ - जो मूल कार्यक्षमता को दोबारा शुरू करने में काम करता है। भले ही यह href attr/prop मुद्दा के लिए एक काफी साफ समाधान जैसा प्रतीत होता है, मैं मदद नहीं कर सकता लेकिन महसूस करता हूं कि प्रारंभिक फ़िक्स है ... यह कितना लंबा हो सकता है।
क्या इस कार्यक्षमता को फिर से शुरू करने के लिए कोई "मानक" तरीका है, और यदि नहीं, तो क्या ऐसा करने का कोई अच्छा तरीका है?
चीयर्स।
मैं कुछ कार्यों को ओवरराइड करने के समान कुछ करता हूं, लेकिन पुराने कोड से नए कार्य करने के बजाय मैं एक विशिष्ट कार्य करता हूं जो: नए कार्य में प्रतिनिधि, किसी भी व्यवहार में परिवर्तन का ख्याल रखता है, और कुछ बहिष्कार चेतावनी (जैसे कंसोल का उपयोग करने) के कुछ रूप भी फेंकता है ताकि क्लाइंट कोड को पुराने दृष्टिकोण से हटाया जा सके। –