1
$('.email').each(function(l,i){
    var that = $(this);
    var thatOtherOne = $(this:after);
    $('<a>').attr('href', 'mailto: '+ that.html + thatOtherOne.css('content')).insertAfter(that);
    that.hide();
});
.email:after {
    content: "@mydomain.com";
}
<span class="email">info</span>

再次您好 Stackoverflow!

这是我对付垃圾邮件的方法。使用 CSS:after选择器,content我尝试在其中填写我的自定义电子邮件,<span>然后 css 添加 url。但这并不能使其可点击,所以这就是我使用 JS/jQuery 尝试上述方法的原因。

遗憾的是,这不起作用,因为$(this:after);它不是有效的选择器。我怎样才能改变这个?

4

1 回答 1

3

您根本无法构建这样的选择器;它真的没有语法意义。选择器用于在 DOM 中进行搜索。要做你想做的事,你可以尝试attr()在你的“内容”中使用这个技巧:

.email:after {
  content: attr(data-domain);
}

然后在您的标记中:

  <a class=email data-domain='@whatever.com'>info</a>

然后你的 JavaScript 可以这样做:

$('.email').each(function(l,i){
    var that = $(this);
    var domain = that.data('domain');
    $('<a>').prop('href', 'mailto: ' + that.text() + domain).insertAfter(that);
    that.hide();
});

这个想法是将代码实际需要使用的内容保存在单独的属性中,然后attr()在 CSS 规则中使用运算符(或任何您想调用的名称)来获取该属性值并将其用作内容。如果您愿意,可以将运算符与字符串组合。Chris Coyier有一篇很好的博客文章

于 2013-08-11T22:42:09.220 回答