मैंने विजेट फैक्टरी का उपयोग करके एक jquery-ui विजेट लिखा है ...
मुझे कोड में यह निर्धारित करने में सक्षम होना चाहिए कि क्या तत्व पहले से ही एक विजेट है या नहीं ...
मेरा निवेश विजेट विजेट के साथ बनाया गया है
$("#container").investmentGrid()
मुझे कोड में कहीं और निर्धारित करने में सक्षम होने की आवश्यकता है यदि $ ("# कंटेनर") पहले से ही एक निवेश ग्रिड है
उत्तर:
उत्तर № 1 के लिए 6आप तत्व की क्वेरी कर सकते हैं jQuery.data()
समारोह, जैसे:
if ($("#container").data("investmentGrid")) {
...
}
जवाब के लिए 5 № 2
आप विजेट फैक्ट्री का उपयोग करते समय आपके लिए बनाया गया छद्म चयनकर्ता आज़मा सकते हैं। $(":namespace-widgetname")
जवाब के लिए 3 № 3
@ दान-कहानी का उस समय जवाब हो सकता थाइसका उत्तर दिया, लेकिन मैंने पाया है कि यह विधि अब और काम नहीं करती है। ठीक है, पूरी तरह से नहीं। कम से कम jUIUI 1.10 के साथ नहीं। प्रलेखन के अनुसार http://api.jqueryui.com/jQuery.widget/ "इंस्टेंस" अनुभाग में, अब आपको विजेट का पूरा नाम होना चाहिए।
उदाहरण के लिए, यदि आप इसके साथ अपना विजेट कारखाना बनाते हैं:
$.widget("Boycs.investmentGrid", ...);
फिर, यह जाँचने के लिए कि कंटेनर में है या नहीं, आप इसकी जाँच करेंगे:
if ($("#container").data("Boycs-investmentGrid"))
{
...
}
यह केवल नाम का उपयोग करने के लिए पर्याप्त नहीं है।
उत्तर के लिए 1 № 4
@Boycs: मेरी समझ के अनुसार, विजेट फैक्ट्री का उपयोग आपको एक ही तत्व पर कई बार प्लगइन को इंस्टेंट करने से बचाता है। (संदर्भ: http://jqueryui.pbworks.com/widget-factory)
इसके अलावा अगर आप पुष्टि करना चाहते हैं कि क्या "कंटेनर" पहले से ही एक निवेश ग्रिड है तो आप अपने प्लगइन कोड के अंदर से निम्न विकल्प आज़मा सकते हैं:
this.element.data ("InvestmentGrid") === यह;
अधिक जानकारी के लिए आप docs.jquery.com/UI_Developer_Guide का संदर्भ ले सकते हैं
उत्तर के लिए 1 № 5
JQuery यूआई के वर्तमान संस्करण (मैं 1.11.x के साथ इसकी पुष्टि कर सकता हूं) आपको विजेट के उदाहरण के माध्यम से क्वेरी करने की अनुमति देता है instance()
तरीका। यह तब इस तरह दिखेगा:
$("#container").investmentGrid("instance")
यदि तत्व में ए नहीं है investmentGrid
विजेट सौंपा गया है, आपको मिलेगा undefined
वापस।
आप इसके बजाय कॉल का उपयोग भी कर सकते हैं:
$(#container").is(":data("namespace-investmentGrid")")
इसका फायदा यह है, कि यह विजेट के लोड न होने पर भी काम करता है।