заимствование от Майкла Джаспера и решений Джона Хендершот, я предлагаю следующее:
$('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. решение Хендершот создает
<a><address></address></a>
, который является недействительным, поскольку блочные элементы, такие как <address>
не разрешается в пределах встроенных элементов, таких как <a>
РИСКОВАННАЯ:. Если ваш <address>
тег содержит элементы уровня блока, такие как <p>
или <div>
, тогда этот код JavaScript будет отображаться с недопустимой разметкой (поскольку тег <a>
будет содержать те элементы уровня блока). Но если вы просто делаете такие вещи:
<address>
The White House
<br>
1600 Pennsylvania Ave NW
<br>
Washington, D.C. 20500
</address>
Тогда все будет хорошо.
Wow that simple, Thnx a ton !!! –
Просто хотел «ВВЕРХ» стрелка. – Si8
Как создать с широтой и долготой? –