2015-05-21 2 views
1

Я хочу обернуть все телефонные номера на веб-странице в привязную метку, используя JQuery. Содержимое на веб-странице генерируется динамически. Вот почему я не могу сделать это непосредственно в html-контенте. Поэтому я хочу обернуть весь текст номера телефона в тег привязки.JQuery - оберните номера телефонов в привязную метку

Пример:

Предположим, у меня есть следующее содержание в HTML:

<div> 
    <span> 
     47582 25541 
    </span> 
</div> 

Я хочу, чтобы преобразовать его в:

<div> 
    <span> 
     <a href="tel:47582 25541">47582 25541</a> 
    </span> 
</div> 

Как я могу это сделать, пожалуйста, помогите мне

+0

возможно дубликат [Как динамически добавлять якорь/HREF в JQuery] (http://stackoverflow.com/questions/12470240/how- to-dynamic-add-anchor-href-in-jquery) – ketan

+0

Нет, это неправильно для моего решения. Здесь у меня нет идентификатора текста телефона. Я хочу сопоставить номера телефонов не по имени класса или по другому. –

ответ

1

Зациклируйте каждый элемент, возьмите его и преобразуйте в тег привязки.

$('.phone_text').each(function(){ 
    var value = $(this).text(); 
    $(this).html('<a href="tel:' + value + '">' + value + '</a>'); 
}); 
1

Использование следующим образом

$('.phone_text').each(function(){ 
    $(this).wrapInner('<a href="tel:' + $(this).html() + '" />'); 
}); 

или с помощью службы.

Примечание: Но это будет влиять на весь диапазон. Не предлагайте следующее.

$('span').each(function(){ 
    $(this).wrapInner('<a href="tel:' + $(this).html() + '" />'); 
}); 

См link

Проверить Fiddle

+0

Вы можете сопоставить номер таким образом 'if ($ (this) .text(). Match (/ [0-9] +/g))' – ketan

0

Попробуйте как этот

$('.phone_text').each(function(){ 
     var ph = $(this).text(); 
     $(this).html($('<a>').text(ph).attr('href',"tel:"+ph)); 
}); 
0

Ключевые моменты

  • содержимого в веб-страницы генерируются динамически
  • нет идентификатора для текста номера телефона

JQuery плагин

я использовал JQuery плагин livequery от here

Какой будет конвертировать все существующие и динамический<span> на якорь тег

Успенская

phone number заворачивают в <span> с номерами и пространстве

Код

jQuery(function($) { 
 
    $("span").livequery(function() { 
 
    var self = $(this), 
 
     text = self.text(); 
 

 
    // numbers & space 
 
    if (/[\d ]/.test(text)) { 
 
     self.wrapInner($("<a>", { 
 
     href: "tel:" + text 
 
     })); 
 
    } 
 
    }); 
 

 
    // demo purpose only 
 
    $("a").click(function() { 
 
    $(".container").append($("<span>", { 
 
     text: "1234 5678" 
 
    })); 
 
    }); 
 
});
span { 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="https://cdn.rawgit.com/hazzik/livequery/master/dist/jquery.livequery.min.js"></script> 
 

 

 
<a href="#">Generate phone number</a> 
 

 
<div class="container"> 
 
    <span>2345 6789</span> 
 
</div>

0

В случае, если у вас есть несколько элементов с номерами телефонов:

/* All phone numbers to href */ 
var regex = /\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/; 
$('div span').each(function() { 
    var text = $(this).html(); 
    text = text.replace(regex, "<a href=\"tel:$&\">$&</a>"); 
    $(this).html(text); 
}); 
Смежные вопросы