Meminjam dari solusi Michael Jasper dan Jon Hendershot, saya menawarkan yang berikut:
$('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);
});
Solusi ini menawarkan manfaat berikut dibandingkan solusi yang sebelumnya ditawarkan:
- Itu tidak akan menghapus tag HTML (mis.
<br>
Tag) di dalam <address>
, jadi pemformatan dipertahankan
- Itu benar menyandikan URL
- Ini meremas ruang ekstra sehingga URL yang dihasilkan lebih pendek dan lebih bersih dan dapat dibaca manusia setelah pengkodean
- Ini menghasilkan markup yang valid (solusi Mr.Hendershot menciptakan
<a><address></address></a>
yang tidak valid karena elemen tingkat blok seperti <address>
tidak diizinkan dalam elemen inline seperti <a>
.
Peringatan : Jika <address>
tag Anda mengandung elemen tingkat blok seperti <p>
atau <div>
, maka kode JavaScript ini akan menghasilkan dalam markup yang tidak valid (karena <a>
tag akan berisi elemen tingkat blok tersebut). Tetapi jika Anda hanya melakukan hal-hal seperti ini:
<address>
The White House
<br>
1600 Pennsylvania Ave NW
<br>
Washington, D.C. 20500
</address>
Maka itu akan bekerja dengan baik.