2010-09-30 9 views
25

मैं jQuery के लिए बहुत नया हूं और अपने PHP एप्लिकेशन में एक सुंदर सरल jQueryUI संवाद बॉक्स चलाने की कोशिश कर रहा हूं।jQueryUI - uncaught अपवाद: विधियों को कॉल नहीं कर सकता

uncaught exception: cannot call methods on dialog prior to initialization; attempted to call method 'open' 

यहाँ मेरी कोड है:: फ़ायरबग कंसोल में मैं त्रुटि मिलती है

$(function() { 
    $("#dialog").dialog({ 
     autoOpen: false, 
     show: "blind", 
     hide: "explode" 
    }); 

    $("#opener").live('click',function() { 
     $("#dialog").dialog("open"); 
     return false; 
    }); 
}); 

मैं त्रुटि पर googling और ज्यादा बढ़ा हुआ नहीं, कि jquery.ui.js को छोड़कर के साथ त्रुटि पैदा कर रहा है कुछ किया:

if (isMethodCall) { 
    this.each(function() { 
     var instance = $.data(this, name); 
     if (!instance) { 
      throw "cannot call methods on " + name + " prior to initialization; " + 
"attempted to call method '" + options + "'"; 
     } 
... 

कोई विचार? मैं इस त्रुटि संदेश और इसे हल करने के तरीके पर किसी भी मदद की सराहना करता हूं।

अद्यतन: मैंने शो/छुपा विकल्पों पर टिप्पणी करने का प्रयास किया और इसका मेरी समस्या पर कोई प्रभाव नहीं पड़ा।

<div class="demo"> 

    <div id="dialog" title="Basic dialog"> 
     <p>This is an animated dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p> 
    </div> 

    <button id="opener">Open Dialog</button> 

</div><!-- End demo --> 

यह HTML एक PHP फ़ाइल है, जो एक और PHP फ़ाइल में शामिल है में शामिल है: नीचे HTML है।

+1

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

+0

हाय थॉमस, मैंने शो/छुपा विकल्प (कोई प्रभाव नहीं) हटा दिया और ऊपर अपना एचटीएमएल चिपकाया, धन्यवाद – themerlinproject

+1

मुझे लगता है कि मेरे आखिरी वाक्य के साथ कुछ करना है "HTML को एक PHP फ़ाइल में शामिल किया गया है, जो किसी अन्य PHP में शामिल है फ़ाइल "।मैं jQuery और PHP के साथ मुद्दों के माध्यम से रहा हूं और परिणामस्वरूप, मैंने भविष्य में AJAX'd सामग्री (जैसे इस div) के लिए फ़ंक्शंस उपलब्ध कराने के लिए लाइव() का उपयोग करना शुरू कर दिया है। मुझे नहीं पता कि यह यहाँ क्यों काम नहीं कर रहा है। – themerlinproject

उत्तर

21

ठीक है, इसे इस तथ्य के साथ करना था कि मैं एक PHP फ़ाइल पर संवाद DIV डाल रहा था जो कि मेरे जेएस लोड होने पर अभी तक लोड नहीं किया गया था। इसलिए मैंने डायलॉग बॉक्स के लिए एक उच्च पृष्ठ तक डीआईवी स्थानांतरित कर दिया, और बटन अब मेरे ऐप में किसी भी पेज पर काम करता है। मैं उम्मीद करता हूं कि इससे किसी की मदद होगी।

+7

@ user410341 - खुशी है कि आपने इसे समझ लिया (और खुश है कि मैं दूसरी समस्या के साथ मदद कर सकता हूं)। यदि आप चाहते हैं, तो भविष्य में लोगों को तुरंत उत्तर खोजने में सहायता के लिए आप इस प्रश्न का अपना जवाब स्वीकार कर सकते हैं। :-) – JasCav

+0

एक ही समस्या मेरे साथ होती है लेकिन "निकालें" फ़ंक्शन को कॉल करती है (यह 'नष्ट' विधि को आमंत्रित करती है। आप इस मुद्दे के लिए सही हैं, मैंने इसे $ (दस्तावेज़) जोड़ दिया है .ready (function() {। ..}); "हटाएं" कॉल के आसपास। – gotqn

1

लिया मेरे मामले में, मैं का उपयोग करें: jQuery यूआई - v1.9.2, और मैं केवल है:

$this.sortable("destroy"); 

और मैं:

असहज त्रुटि: प्रारंभिक से पहले क्रमबद्ध करने पर विधियों को कॉल नहीं कर सकता; विधि कॉल 'नष्ट'

करने का प्रयास किया और मैं जब सत्यापन जोड़ने तय:

if ($this.data("ui-sortable")) 
{ $this.sortable("destroy"); } 
+0

मैं संकेत के लिए एक और त्रुटि के साथ संघर्ष कर रहा था –

0

मैं एक ही त्रुटि हो रही थी, और probleme कोड का आदेश था !! आपको HTML कोड के बाद आपका जावास्क्रिप्ट होना चाहिए :)।

0

मेरे मामले में मुतुल्स (क्लासिक जूमला, दाएं?) के साथ एक जेएस संघर्ष था। इसलिए मैं main.js के पास गया और इस लाइन बदल दिया है: यह एक करने के लिए

$(function() { 

:

jQuery(function ($) { 
+0

कौन सा main.js आपने संशोधित किया? –

+0

@AalexGabi, मुझे अब याद नहीं है, लेकिन किसी भी जेएस jQuery फ़ाइल को नहीं चाहिए जब आप Mootools और jQuery का एक साथ उपयोग करते हैं तो $ से शुरू करें। आपको यह निर्दिष्ट करना चाहिए कि आप वास्तव में jQuery ऑब्जेक्ट के रूप में $ का मतलब है। –

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