如何将特定数据属性(数据编号)设置为与正则表达式匹配的tel链接

时间:2015-03-12 05:52:23

标签: jquery

我想将特定数据属性(数据编号)设置为tel.Ex.

<p data-number="(+91) 000-000-00000">(+91) 000-000-00000</p>
<p data-number="(111) 111-1111">(111) 111-1111</p>
<div data-number="(+91) 111-111-11111">(+91) 111-111-11111</div>
<div data-number="(111) 111-1111">(111) 111-1111</div>

我想只将那些与我的正则表达式匹配的数字转换为<a href="tel:"></a>。我试过这样的

var n = $("[data-number]").length;
var array = $("[data-number]");
var re = /^\(\+\d{2}\)\s|\+\d{2}-|\d{3,4}[-.]?\d{3}[-.]?(\d{4,5})\b$/;
var result;

for (var i = 0; i < n; i++) {
    Tel_Number = array.eq(i).attr('data-number');
    if (Tel_Number.match(re)) {
        alert(Tel_Number);
    }
}

我在alert中获得与正则表达式匹配的数字。匹配的数字我想将它们转换为<a href="tel:></a>。我有一个解决方案,将所有数据转换为tel,如下所示:

$("p[data-number]").each(function() {

    var $a = $("<a />").attr("href", "tel:" + $(this).data("number"));
    $a.html($(this).html());
    $(this).html($a);
});

请建议我如何转换与<a href="tel:></a>

匹配的数字

1 个答案:

答案 0 :(得分:1)

我刚修改了一些代码并使其正常工作,见下文 -

var re = /^\(\+\d{2}\)\s|\+\d{2}-|\d{3,4}[-.]?\d{3}[-.]?(\d{4,5})\b$/;
$("[data-number]").each(function () {
    var Tel_Number = $(this).attr('data-number');
    if (Tel_Number.match(re)) {
        var $a = $("<a />").attr("href", "tel:" + $(this).data("number"));
        $a.html($(this).html());
        $(this).html($a);
    }
});

工作小提琴 - http://jsfiddle.net/sh4mkrbg/1/