माइकल जैस्पर और जॉन हेंडरशॉट के समाधान से उधार लेकर, मैं निम्नलिखित प्रस्तुत करता हूं:
$('address').each(function() {
var text = $(this).text();
var q = $.trim(text).replace(/\r?\n/, ',').replace(/\s+/g, ' ');
var link = '<a href="http://maps.google.com/maps?q=' + encodeURIComponent(q) + '" target="_blank"></a>';
return $(this).wrapInner(link);
});
यह समाधान पहले दिए गए समाधानों पर निम्नलिखित लाभ प्रदान करता है:
- यह HTML टैग (उदा
<br>
टैग) को नहीं हटाएगा <address>
, इसलिए स्वरूपण संरक्षित है
- यह URL को ठीक से एनकोड करता है
- यह अतिरिक्त स्थानों को नष्ट कर देता है ताकि उत्पन्न URL छोटा और क्लीनर और एन्कोडिंग के बाद मानव-पठनीय हो
- यह वैध मार्कअप का उत्पादन करता है (Mr.Hendershot का समाधान बनाता है
<a><address></address></a>
जो अमान्य है क्योंकि इन- <address>
लाइन तत्वों जैसे ब्लॉक-स्तरीय तत्वों की अनुमति नहीं है <a>
।
कैविएट : यदि आपके <address>
टैग में ब्लॉक-स्तरीय तत्व जैसे <p>
या हैं <div>
, तो यह जावास्क्रिप्ट कोड अमान्य मार्कअप में उत्पन्न होगा (क्योंकि <a>
टैग में उन ब्लॉक-स्तरीय तत्व होंगे)। लेकिन अगर आप सिर्फ इस तरह से सामान कर रहे हैं:
<address>
The White House
<br>
1600 Pennsylvania Ave NW
<br>
Washington, D.C. 20500
</address>
तब यह ठीक काम करेगा।