使用JS来改变链接

时间:2012-12-05 04:20:31

标签: javascript jquery hyperlink

我有一个我正在使用的脚本,它会将常规链接中的链接更改为 mailto 链接。这个想法是最糟糕的机器人不会解析javascript因此比将电子邮件地址原样或间距和拼写 @ 符号更好一点。

HTML应呈现为:

  

通过电子邮件联系我们的销售经理。

电子邮件一词将是电子邮件的链接。然而,使用JS代码,它呈现如下:

  

通过email@email.com联系我们的销售经理。

我希望第一句话是页面呈现的方式。

以下是代码:

HTML:

<p>Contact our Sales Manager by
   <a class="email" title="email/email.com" href=" ">email</a>.
</p> 

JS:

$(function() {

  $('a.email').each(function(){

    var e = this.title.replace('/','@');

    $(this).text().replace('/','@');

    this.href=" ";

    this.href = 'mailto:' + e; $(this).text(e);

   });
});

如何修改脚本以将电子邮件留在那里但是正确创建链接?

4 个答案:

答案 0 :(得分:1)

以下是一个工作示例:http://jsfiddle.net/smLQ7/

要解决此问题,只需删除JavaScript的一部分即可:

$(document).ready(function() {
  $('a.email').each(function(){
    var e = this.title.replace('/','@');
    $(this).text().replace('/','@');
    this.href=" ";
    this.href = 'mailto:' + e;
   });
});​

我们已删除此代码:

$(this).text(e);

它负责在页面内容中用email替换email@email.com

答案 1 :(得分:1)

替换

$(this).text(e)

通过

$(this).text('email');

text('some string')用其参数替换元素的内容。因此,在您的情况下,链接的内容将被电子邮件地址替换。

答案 2 :(得分:1)

如果你打算通过JS去做,那么为什么还要把地址放在标签里呢?

为什么不在(文档).ready()

上尝试这样的事情
var theaddress ="mailto:email@email.com"

$('a.email').attr('href',theaddress);

编辑:

在此工作:http://jsfiddle.net/sMnrR/

答案 3 :(得分:0)

如果了解你的问题,这是解决方案:

$(function() {
  $('a.email').each(function(){

    var e = this.title.replace('/','@');
    $(this)
        .attr('href','mailto:' + e)
        .text(e.substr(0,e.indexOf("@")));
   });
});​

查看jsfiddle