2014-05-22 3 views
7

मेरा JQuery स्लाइडर IE (किसी दस्तावेज़ दस्तावेज़ में) में काम नहीं करता है। मैं इसे कैसे ठीक कर सकता हूं? एक बटन दबाए जाने के बाद मेरा कोड पाठ के एक div को नीचे स्लाइड करता है (यह अच्छी तरह से fades भी)। "Object doesn't support property or method 'fadingSlideToggle'".मेरा JQuery लुप्तप्राय स्लाइडर किसी भी आईई प्रकार पर क्यों काम नहीं करता है?

(function ($) { 
    $.fn.fadingSlideToggle = function ($el, options) { 
     var defaults = { 
      duration: 500, 
      easing: 'swing', 
      trigger: 'click' 
     }; 

     var settings = $.extend({}, defaults, options) 
     $selector = $(this).selector; 

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

      $(document).on(settings.trigger, $selector, function (e) { 
       e.preventDefault(); 
       if ($($el).css('display') == 'none') { 
        $($el).animate({ 
         opacity: 'toggle', 
         height: 'toggle' 
        }, settings.duration, settings.easing); 
       } else { 
        $($el).animate({ 
         opacity: 'toggle', 
         height: 'toggle' 
        }, settings.duration, settings.easing); 
       } 
      }); 
     }); 
    }; 
})(jQuery); 

मुझे आश्चर्य है कि कौन-सा हिस्सा समर्थित नहीं है, और इसे ठीक करने के लिए: IE सांत्वना मुझे इस त्रुटि देता है। आपका बहुत बहुत धन्यवाद!

संपादित करें: यहाँ कोड है, जहां मैं फ़ंक्शन को कॉल है (यह फ़ायरफ़ॉक्स और क्रोम पर काम करता है):

<button class="btn-custom btn-lg"" id="clickedEl"><span>Why rate/review websites?</span>  </button></br> 
<nav role="navigation" id="toggleEl">/*non relevant html*/</nav> 

जावास्क्रिप्ट के बाकी:

$(function(){ 
    $('#clickedEl').fadingSlideToggle('#toggleEl'); 
    }); 

JSFiddle जो ऐसा नहीं करता आईई में काम: http://jsfiddle.net/3ymvv

+0

क्या आप उपयोग कोड भी पोस्ट कर सकते हैं? –

+2

क्या आप कृपया सत्यापित कर सकते हैं कि jQuery लाइब्रेरी को शामिल करने के लिए कई कॉल नहीं हैं? आप एक खाली प्रति के साथ अपने संशोधित एक ओवरराइड कर सकते हैं। – scragar

+0

आपके द्वारा संलग्न एचटीएमएल ** ** कोड नहीं दिखाता है जहां आप jQuery प्लगइन – Luke

उत्तर

8

समस्या jQuery 1.10.1 (#13936#13980) से आते हैं लगता है।

Access Denied - jQuery-1.10.1.js, line : 1513, column : 2

और संबंधित लाइनों:: यहाँ त्रुटि हमारे पास है

// Support: IE>8 
// If iframe document is assigned to "document" variable and if iframe has been reloaded, 
// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 
if (parent && parent.frameElement) { // :1513 
    parent.attachEvent("onbeforeunload", function() { 
     setDocument(); 
    }); 
} 

यह जल्दी होता है, और संभवतः अपनी स्क्रिप्ट लोड करने के लिए रोकने।

1.11.0 संस्करण (या अधिक) और you'll see it works पर jQuery अपडेट करें।

+0

एक ही चीज़ मिल गई, लेकिन इस आदमी ने मुझे स्पष्ट रूप से इसे हराया। इस आदमी को अपने 50 अंक दें, यह साबित करने के लिए पहेली है: http://jsfiddle.net/3ymvv/10/ – myfunkyside

0

यहां हम स्पष्ट रूप से नहीं जानते कि समस्या कहां हो सकती है।

  1. आपका कोड ठीक दिखता है।
  2. कृपया हमें कोड जहां आप अपने प्लगइन
  3. वहाँ जहाँ आप अपने प्लगइन का उपयोग का उपयोग दिखाने के लिए, जाँच प्लगइन परिभाषित किया गया है, तो console.log($.fn.fadingSlideToggle)
  4. जाँच लें कि वस्तु आप अपने प्लगइन बुला रहे हैं वास्तव में एक वैध jQuery वस्तु है। console.log(obj instanceof jQuery) या (!!obj.jquery && typeof obj.jquery === "string")

एक jQuery वस्तु आमतौर पर एक संपत्ति jquery कहा जाता है उस में वर्तमान jQuery संस्करण है कि है। इसके अलावा jquery ऑब्जेक्ट आमतौर पर jQuery ऑब्जेक्ट का एक उदाहरण है। लेकिन ध्यान यह संभव है में रखना .noconflict() का उपयोग कर कोई वैश्विक चर jQuery या $

+0

प्लगइन परिभाषित किया गया है, मैंने अपने कंसोल की जांच की है। मैं कैसे जांचूं कि यह वैध JQuery ऑब्जेक्ट है या नहीं? –

+0

अद्यतन उत्तर – Luke

+0

देखें यह झूठा –

1

जब मैं खिड़कियों एक्सपी, IE8 और फ़ायरफ़ॉक्स के एक पुराने संस्करण में समान व्यवहार का परीक्षण किया गया था प्रदर्शन किया (यह अचानक दिखाई देने #clickeEl पहले क्लिक किया था) है कि । <nav> तत्व को हटाकर और <ul> तत्व का उपयोग करके इसे ठीक करना प्रतीत होता था। तब मुझे एहसास हुआ कि समस्या टैग <nav> थी जो IE8 और फ़ायरफ़ॉक्स के लिए अज्ञात है। जैसा कि this article में बताया गया है, ब्राउज़र नहीं जानते कि <nav> एक ब्लॉक तत्व है। तो

nav { display:block } 

विंडोज 8p में i8 में समस्या को ठीक किया गया।

Demo

वास्तव में, यकीन नहीं कैसे संगत यह है, लेकिन चूंकि यह jQuery उपयोग कर रहा है यह, प्लगइन कुछ अनावश्यक सामान कर रही है लगता है। तो मैंने इसे थोड़ा सा जोड़ा। (ज्यादातर यह मुझे परेशान आप के बजाय एक आईडी प्लगइन के साथ ही सीएसएस में display:none सेट करना होगा।

Proposed Changes

0

समस्या पहेली में jQuery लोडिंग है। बस एक सीडीएन से jQuery लोड करें और फिर अपनी प्लगइन शुरू करें।

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script> 
    // your plugin 
</script> 

अब यह आईई 8+ में ठीक काम करता है।

0

क्या आपको किसी भी मौके से fadingSlideToggle की आईडी के साथ एक HTML तत्व है? जैसा कि यहां बताया गया है यह मुद्दा हो सकता है: https://stackoverflow.com/a/14003088/561957

संबंधित मुद्दे