2009-04-23 10 views
10

jQuery के साथ ब्राउज़र FF3 और IE6/7 के लिए विकसित करते समय, HTML टैग पर कस्टम विशेषताओं को सेट करते समय कोई संगतता समस्याएं हैं?क्या मैं HTML DOM में डेटाबेस रिकॉर्ड की तरह कस्टम विशेषताओं को संग्रहीत कर सकता हूं?

सबसे पहले, मुझे jQuery के data() फ़ंक्शन के बारे में पता है और यह अनिवार्य रूप से मैं चाहता हूं, लेकिन डेटा clone() फ़ंक्शन से बच नहीं रहा है। JQuery UI ड्रैगगेबल/ड्रॉपपेबल प्लगइन्स का उपयोग करते समय यह एक समस्या है क्योंकि यह ड्रैग/ड्रॉप के दौरान DOM तत्वों को क्लोन करता है। इस प्रश्न के प्रयोजन के लिए, मुझे data() के विकल्प की आवश्यकता है।

मैं ड्रैग/ड्रॉप ऑपरेशंस के बीच डेटा को जारी रखना चाहता हूं। मैं ड्रैम/ड्रॉप ऑपरेशन के दौरान स्थानांतरित होने वाले डीओएम तत्व में डेटा इंजेक्ट करने में सक्षम होना चाहता हूं। ऐसा करने के लिए, मैं डेटाबेस रिकॉर्ड अनुकरण करने के लिए HTML बाल तत्व बना सकता हूं। त्वरित प्रयोग से पता चलता है कि फ़ायरफ़ॉक्स में किसी भी विशेषता नाम का उपयोग करने में कोई समस्या नहीं है जिसे मैं डेटा के फ़ील्ड स्टोर करना चाहता हूं। हालांकि, एचटीएमएल 4 spec का कहना है कि कुछ टैग में केवल कुछ विशेषता नाम हो सकते हैं। गैर-मानक गुणों वाले डीओएम को पॉप्युलेट करने से मैंने जिन ब्राउज़रों का उल्लेख किया है, उनके साथ असंगतता के कारण हैं?

उत्तर

10

इस समान प्रश्न मैं एक से पूछा पर एक नजर डालें जबकि वापस: Can I just make up attributes on my HTML tags?

व्यक्तिगत रूप से, मुझे वास्तव में कक्षा के गुण में आपके सभी डेटा डालने के सुझाए गए उत्तरों को पसंद नहीं है। ऐसा लगता है, बस ... गलत आप जानते हैं? मेरे अनुभव में, हालांकि यदि आप गुण बनाते हैं तो आपका पृष्ठ मान्य नहीं होगा, फिर भी मैं इसे वैसे भी करता हूं। इसे 4 प्रमुख ब्राउज़रों में परीक्षण करें और यदि यह काम करता है, तो कौन परवाह करता है?

सबसे अच्छा समाधान जो मैं सोच सकता हूं वह एक है जो मान्य नहीं है, लेकिन यह HTML5 में होगा, तो यह अच्छा है। कि अन्य प्रश्न में ms2ger द्वारा सुझाए गए के रूप में, उपसर्ग अपने कस्टम के साथ data-

http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#embedding-custom-non-visible-data

0

पर http://www.persvr.org/

दृढ़ रहें एक नया देशी वस्तु भंडारण JavaScriptDB बुलाया इंजन है कि उच्च अंत scalability प्रदान करता है सुविधाएँ एक नज़र और प्रदर्शन

http://ajaxian.com/archives/perseveres-javascriptdb-impressive-json-performance

+0

Persevere एक सर्वर-साइड लाइब्रेरी है जिसमें गैर-जावास्क्रिप्ट घटक शामिल हैं। इसका उपयोग ब्राउज़र में नहीं किया जा सकता है। – kpozin

1

अनुपस्थित जिम्मेदार बताते हैं HTML4 में यह करने के लिए कुछ मानक तरीका है, मैं एक छिपा तत्व है कि मेरे खींचने योग्य और दुकान से मेल खाती है बनाने के लिए परीक्षा की जाएगी इसमें संबंधित डेटा। ड्रैगगेबल के सापेक्ष छिपा तत्व नाम दें ताकि आप इसके लिए जानकारी आसानी से देख सकें। निम्नलिखित एक्सटेंशन एक छिपे हुए अवधि का उपयोग करके इसे लागू करता है। नोट: इसका परीक्षण करने में मैं ड्रैग करने योग्य वस्तुओं के साथ अपने मुद्दों को दोहराना नहीं कर सका - डेटा() मेरे लिए ठीक काम करना प्रतीत होता था, लेकिन मैंने इसे विभिन्न प्लगइन के साथ परीक्षण नहीं किया, बस यूआई। ड्रैगगेबल।

उपयोग:

$('#draggableDiv').externalData('key','data'); 
var d = $('#draggableDiv').externalData('key'); 

jQuery.fn.externalData = function(key, data) { 
    var value = this; 
    this.each(function() { 
     var id = this.id+'_external_data'; 
     var elem = jQuery('#'+id+':first'); 
     if (elem.size() == 0) { 
      elem = $('<span style="display: none;" id="' + id + '"></span>"'); 
      elem.appendTo(document.body); 
     } 
     if (data) { 
      elem.data(key,data); 
     } 
     else { 
      value = elem.data(key); 
      return false; 
     } 
    }); 
    return value; 
}; 
1

यह अपेक्षाकृत अनजान लेकिन सुंदर डांग उपयोगी है: jQuery Metadata Plugin। यह आपको पुनर्प्राप्ति के लिए कक्षा के नामों के भीतर डेटा स्टोर करने देगा। इसका ज्यादातर सत्यापन प्लगइन के लिए उपयोग किया जाता है, लेकिन वास्तव में, किसी भी परिदृश्य में अनुकूलित किया जा सकता है।

जो कुछ भी आप काम कर रहे हैं उसके साथ शुभकामनाएं।

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

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