2011-04-10 4 views
12

का उपयोग कर मैं अपने स्वयं के उपयोग के लिए jQuery.guid का उपयोग कर सकता हूं?jQuery.guid

var guid = jQuery.guid++; 

$('<a href="#" id="a' + guid + '">link</a>').appendTo('body'); 

क्या यह सुरक्षित है: जहाँ मैं एक विशिष्ट आईडी attr जरूरत है तो मैं बस jQuery.guid++ लिए यह बहुत की तरह सेट करना चाहते हैं मैं तत्वों है? क्या यह कोई कोड या प्लगइन तोड़ देगा?

+1

यह jQuery नष्ट नहीं होती है। कोई भी एक खराब प्लगइन लिख सकता है जो आप jQuery.guid बदलते हैं तो तोड़ सकता है। मैं फिर से सलाह दूंगा हालांकि किसी भी नए jQuery संस्करण को तोड़ सकता है। '$ .guid' वास्तव में सार्वजनिक नहीं होना चाहिए। – Raynos

उत्तर

3

यह कुछ भी तोड़ना नहीं चाहिए, हालांकि, यदि आप वैश्विक चर के रूप में $.guid का उपयोग करने जा रहे हैं, तो guid नामक एक और चर बनाने की आवश्यकता नहीं है।

बस एक बार $.guid प्रारंभ करें और फिर इसे सीधे उपयोग करें।

// initialize once 
$.guid= 0; 

// use it directly when needed 
$('<a href="#" id="a' + ($.guid++) + '">link</a>').appendTo('body'); 

अद्यतन:

यह $.guid लाइव इवेंट की jQuery द्वारा आंतरिक रूप से प्रयोग किया जाता है लगता है और डोम के लिए इस्तेमाल नहीं किया जाना चाहिए। आपको अपना खुद का वैश्विक चर बनाना चाहिए और इसे स्वयं बढ़ाएं।

+0

हाँ लेकिन $ .guid पहले से ही jQuery द्वारा आंतरिक रूप से उपयोग किया जा रहा है। मुझे लेबल और घटनाओं के लिए मुझे जो भी मूल्य देता है उसका पुन: उपयोग करने की आवश्यकता होगी, इसलिए मुझे चर की प्रतिलिपि रखना होगा। – qwertymk

+0

ओह, मुझे खेद है, मुझे वास्तव में पता नहीं था कि '$ .guid' आंतरिक रूप से उपयोग किया गया था। उस स्थिति में, मैं ऊपर लिखा गया था, बस एक और परिवर्तनीय नाम, जैसे '$ .myguid', सुरक्षित होने के साथ जाऊंगा। – Daniel

+0

हाँ, लेकिन मुझे यकीन नहीं है कि क्या jQuery तत्वों या घटनाओं को हटाने या जोड़ने की स्थिति में ट्रैक की संख्या को ट्रैक कर रहा है या नहीं। मुझे यह जानने की ज़रूरत है कि किसी भी प्लगइन के लिए या घटनाओं का ट्रैक रखने के लिए यह महत्वपूर्ण है या नहीं। मैं नहीं चाहता कि यह किसी भी कोड को – qwertymk

10

आप एक Guid उत्पन्न करने के लिए इस कोड का उपयोग कर सकते हैं:

'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, 
function(c) 
{ 
    var r = Math.random() * 16|0, v = c == 'x' ? r : (r&0x3|0x8); 
    return v.toString(16); 
});