8

मुझे एक अजीब समस्या का सामना करना पड़ रहा है और कोई समाधान नहीं मिल रहा है।jQuery इंटरनेट एक्सप्लोरर 8 में काम नहीं करता है ("यह" jq के बजाय डीओएम देता है)

Object doesn't support this property or method

Screenshot from debugger:

jQuery (।। किसी भी संस्करण, 1.7 से * 1.10 के लिए *) इंटरनेट एक्सप्लोरर     8. (बूटस्ट्रैप से) सभी प्लग इन और एक त्रुटि के साथ jQuery पुस्तकालय गिरावट में विफल रहता है:

screenshot from debugger

प्लगइन्स कोड में खुदाई, इस तरह:

को यह कीवर्ड अंक HTMLDomObject, एक jQuery वस्तु पर नहीं:

समस्या को दर्शाता है। ऐसी अजीब त्रुटि का कारण क्या हो सकता है?

केवल इंटरनेट एक्सप्लोरर   में!

+3

jquery संस्करण का उपयोग किया गया? यदि यह jquery 2.x है तो IE <9 समर्थित नहीं है –

+14

आपको jQuery के साथ 'यह' लपेटना होगा। '$ (This)'। –

+1

आप उस फ़ंक्शन को कैसे कॉल करते हैं? – Bergi

उत्तर

0

मुझे कोड का एक टुकड़ा मिला है, जिससे इस समस्या का कारण बन गया। मुझे अभी भी समझ में नहीं आ रहा है कि यह कैसे सभी jQuery को तोड़ सकता है और यह क्यों तोड़ रहा था (फिर से, यह सभी ब्राउज़रों में पूरी तरह से काम करता था लेकिन इंटरनेट   एक्सप्लोरर   8), लेकिन को इटरेटर में $ .each() त्रुटियों को गायब करने के लिए बना दिया।

for (var i in $postsPortions) { 
    var $p = $($postsPortions.get(i)); 
    var offset = $p.offset(); 
    if (offset && Math.abs(offset.top - scrollTop) < 100) { 
     var year = $p.data('year'); 
     var season = $p.data('season'); 
     window.location.hash = year + '/' + season; 
     $milestones.removeClass('active'); 
     $milestones.filter('.year_' + year + '.season_' + season).addClass('active'); 
     return; 
    } 
    if (i >= ($postsPortions.length - 1)) return; 
} 
+1

यदि आपकी समस्या इसलिए थी क्योंकि आपके 'इन लूप' के लिए, आपको 'हैऑनप्रॉपर्टी()' में देखना चाहिए। इन 'लूप्स हड़पने के लिए मान अनजान हो सकते हैं, और ब्राउज़र में _can_ बदल सकते हैं। – Jordan

+5

पर एक नज़र डालें [सरणी पुनरावृत्ति के साथ "इन ... इन" का उपयोग क्यों करना एक बुरा विचार है?] (Http://stackoverflow.com/questions/500504/why-is-using-for-in-with-array- पुनरावृत्ति-जैसे-एक बुरा विचार) शायद। अगर आपने तुरंत उस कोड को पोस्ट किया था तो हम आपकी मदद कर सकते थे। – Bergi

+0

@ बर्गि मेरे पास इस प्रोजेक्ट में कोड की लगभग 2k लाइनें हैं, इसलिए यह पता लगाना कि कौन सी कोड पोस्ट करना एक समस्या थी) लिंक के लिए Thanx। लेकिन मुझे अभी भी यह समझ में नहीं आता कि कोड की यह शांति प्रश्न में वर्णित तरीके से पूरी तरह से कैसे टूट सकती है (क्यों उसने जेक्यू लाइब्रेरी के व्यवहार को बदल दिया) – Terion

-1

जब आप jQuery.each विधि का उपयोग करते हैं, तो "यह" (कॉलबैक में) DOM तत्व को इंगित करता है, jQuery wrapper पर नहीं।

$elements.each(function(){ 
    var $this = $(this); 

    // do something with $this ... 
}); 
+1

लेकिन जब आप एक jQuery बनाते हैं प्लगइन, 'यह' jQuery ऑब्जेक्ट है जिसे प्लगइन पर कॉल किया गया था। –

0

कुछ अन्य कोड या प्लगइन एक और JavaScript लाइब्रेरी लोड हो रही है और बुला कोड jQuery.noConflict() की देखभाल नहीं किया जा सकता है कि: इस प्रकार के रूप में, आप रैप करने के लिए "इस" jQuery वस्तु में है। यह मेरे साथ कई बार हुआ है। इस बीच, अपने कोड को काम करने के लिए, आप निम्न कार्य भी कर सकते हैं:

//If 'this' is pointing to a HTMLDomObject 
var obj = $(this) 
संबंधित मुद्दे