2014-09-26 112 views
0

我有许多页面包含这种格式的电话号码xxx-xxx-xxxx。 这些电话号码不是链接,我需要做的是编写一些脚本,首先找到这些电话号码。这是我已经获得国家是:jQuery/JavaScript查找并用RegEx替换

$(document).ready(function(){ 

var content = $(".main").text(); 
var phoneNumber = content.match(/\d{3}-\d{3}-\d{4}/) 

alert(phoneNumber); 
}); 

这工作在这么多,就是抓住了号码,我现在需要做的是更换电话号码的页面上

'<a href=" onclick=" ... "' + 'tel:' + phoneNumber + '">' + 'originalPhoneNumber' + '</a>' 

然而我完全失去了这一点。我可以在jQuery中使用.replaceWith()吗?

编辑

好吧,我试图修改代码以包括第二属性我想:

$(document).ready(function() { 
    var content = $(".main").html(); 
    content = content.replace(/\d{3}-\d{3}-\d{4}/g, function(v){ 
     return $('<a>').attr({ 
      href: "tel:"+v, 
      onclick: "ga('send', 'event', 'lead', 'phone call', 'call');" 
     }).html(v)[0].outerHTML; 
    }); 

    $('.main').html(content); 
}); 

它仍然将在href但它忽略的onclick。

+2

*“我可以用'.replaceWith()'jQuery中?“''.replaceWith()'适用于DOM元素,不适用于字符串。 – 2014-09-26 21:35:21

+0

@FelixKling OP想要使用正则表达式的替换方法... – 2014-09-26 21:38:22

+0

您应该在服务器端完成这项工作,然后保存包含更改的页面,否则每次加载页面时都会执行替换。 – 2014-09-26 21:50:17

回答

0

这将与电话的元素替换所有匹配的字符串:链接

<div class = "main">333-333-3333 444-444-4444</div> 

<script type="text/javascript"> 

    var content = $(".main").text(); 

    content = content.replace(/\d{3}-\d{3}-\d{4}/g, function(v){ 
     return $('<a>').attr('class', set.classname).attr('href', 'tel:'+v).html(v).wrap('<a>').parent().html(); 
    }); 

    $('.main').html(content); 

</script> 

或者更整齐实现:

$.fn.extend({ 
     tel : function(def) { 

      var set = { 
       regex : /\d{3}-\d{3}-\d{4}/g, 
       classname : "" 
      } 

      $.extend(true, set, def); 

      var c = $(this).html(); 

      c = c.replace(set.regex, function(v){ 
       return $('<a>').attr('class', set.classname).attr('href', 'tel:'+v).html(v).wrap('<a>').parent().html(); 
      }); 

      $(this).html(c); 
      return this; 
     } 
    }); 

    // default regex: 000-000-0000 
    $('.main').tel();  

    // default regex: 000-000-0000 <a> class of tel-link applied 
    $('.main').tel({ classname : "tel-link" });    

    // override regex: 0000-0000-000  
    $('.main').tel({ regex: /\d{4}-\d{4}-\d{3}/g }); 
+0

谢谢你的确的工作,我已经更新了我原来的关于第二个属性的问题。 – scabbyjoe 2014-09-26 23:13:13