0

我有一个正在使用的脚本,它将一个链接从常规链接更改为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);

   });
});

我将如何修改脚本以将单词 email 留在其中但正确创建链接?

4

4 回答 4

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

于 2012-12-05T04:24:02.593 回答
1

代替

$(this).text(e)

经过

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

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

于 2012-12-05T04:24:20.553 回答
1

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

为什么不在 (document).ready() 上尝试这样的事情

var theaddress ="mailto:email@email.com"

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

编辑:

在这里工作:http: //jsfiddle.net/sMnrR/

于 2012-12-05T04:26:16.433 回答
0

如果了解您的问题,以下是解决方案:

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

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

看看jsfiddle

于 2012-12-05T04:39:23.917 回答