2009-02-11 22 views
7

के लिए एट्रिब्यूट सेट करें, मैं HTML एंकर तत्व "ए" के लिए "हैश" विशेषता सेट करने के लिए $ (expr) .attr ("हैश", मान) का उपयोग कर रहा हूं लेकिन Jquery ऐसा नहीं करेगा। लेकिन अगर मैं expr को "div" में बदलता हूं, तो मैं "हैश" विशेषता को "div" टैग पर सेट कर सकता हूं।JQuery, <a> टैग

क्या यह व्यवहार एक xhtml विनिर्देश है? मैं "ए" टैग विशेषता "आईडी" सेट कर सकता हूं। चूंकि आईडी HTML "ए" टैग के लिए विशेषता में निर्मित है।

+0

यदि आप वास्तविक एचटीएमएल और jQuery का उपयोग कर रहे हैं तो यह मदद कर सकता है। –

उत्तर

6

शायद आपकी परेशानी यह है कि <a> टैग के लिए कोई भी hash विशेषता नहीं है। शायद आप name विशेषता की तलाश में हैं, या शायद आप href लिंक में हैश को बदलना चाहते हैं, इस मामले में आपको लिंक टेक्स्ट को पार्स करना होगा और नियमित अभिव्यक्तियों का उपयोग करके हैश को प्रतिस्थापित करना होगा।

13

HTML एंकर तत्व के लिए एक "हैश" विशेषता सेट करने के लिए "एक"

< एक> तत्व (HTMLLinkElement) पहले से ही एक डोम स्तर 0 hash संपत्ति है। यह तत्व के href द्वारा संदर्भित यूआरएल के अंत में '... # एंकर' भाग को पढ़ने या सेट करने के लिए window.location.hash जैसा प्रयोग किया जाता है।

a.hash सेट करना, सीधे या jQuery के attr() रैपर के माध्यम से, केवल लिंक के यूआरएल में एंकर नाम सेट करता है। आप जानबूझकर कह सकते हैं कि आप डीओएम विधि a.setAttribute('hash', value) पर कॉल करके एक वास्तविक विशेषता चाहते हैं, सिवाय इसके कि यह लंबे समय से चलने वाली बग के कारण आईई 6/7 में काम नहीं करता है, जहां यह गुणों और गुणों को भ्रमित करता है।

यह तत्वों के लिए कस्टम गैर-मानक विशेषताओं को जोड़ने में समस्याओं में से एक है, आप कभी नहीं जानते कि यह किसी मौजूदा नाम से संघर्ष करने जा रहा है। एचटीएमएल 5 सुझाव देगा कि आप अपने कस्टम विशेषताओं को 'डेटा-' से शुरू होने वाले नामों तक सीमित कर दें, लेकिन आम तौर पर यदि आप कर सकते हैं तो डेटा संग्रहीत करने का एक और तरीका ढूंढना सबसे अच्छा है।

0

हैश स्थापित करने के लिए एक और विकल्प। यह केवल तभी काम करता है जहां अभिव्यक्ति एक तत्व लौटाती है। ऐसा इसलिए है क्योंकि हैश वास्तविक डोम तत्व पर एक संपत्ति है।

$(expr).each(function() { 
    this.hash = value; 
}); 

इसकी एक करके देखें कि क्या एक टैग उपयोग इस

$(expr).is('a').each(function() { 
    this.hash = value; 
}); 

मामले में जहां आप वास्तव में कुछ कस्टम संलग्न करने के लिए विशेषता मैं डेटा पद्धति का उपयोग करके मूल्य जोड़ने की सिफारिश करेंगे चाहते हैं परीक्षण करने के लिए अपनी जरूरत है, तो

$(expr).data('myHash', value);