jQuery外部链接类

时间:2009-11-30 04:44:44

标签: jquery

我已将以下内容实施到我们的某个网站,以在外部链接旁边显示外部链接图标:

$(document).ready(function() {
  $('#extlinks a').filter(function() {
 return this.hostname && this.hostname !== location.hostname;
  }).after(' <img src="/images/external.png" alt="external link"/>');
});

我们使用Business Catalyst,我希望它与设置服务器的方式无关,但如果从网址中删除www,则所有链接都显示为外部。

以下是一个示例:http://noosabiosphere.org.au/_blog/Environment_Blog

感谢。

3 个答案:

答案 0 :(得分:1)

看起来链接正在使用www写在页面上。在前面,而不是相对链接。

this.hostname !== location.hostname

返回true。

答案 1 :(得分:0)

请确保链接以http://开头,我已使用以下链接对其进行了测试:

<ul style="list-style:none none outside;">
    <li><a href="http://www.google.com">Google</a></li>
    <li><a href="http://localhost/EnterKey.html">Enter Key</a></li>
    <li><a href="www.microsoft.com">Microsoft</a></li>
    <li><a href="http://stackoverflow.com/questions/">SO</a></li>
</ul>

<script type="text/javascript">
$(function(){
 $("a").filter(function(){
  return this.hostname && this.hostname !== location.hostname;
 }).after("<img src='/images/extlink.gif'/>");
});
</script>

只有第一个(谷歌)和最后一个(SO)链接显示图像而不是第三个(MS)链接。

答案 2 :(得分:0)

使用以下代码,您可以使用$('a:external');

找到外部链接
(function($) {
$.extend($.expr[':'], {
    external: function(o) {
        return o.hostname !== window.location.hostname && o.hostname;
    }
});
$.fn.external = function() {
    return this.filter(':external');
};
}(this.jQuery));

关于以协议(http://)开头的链接,您应该对所有外部链接执行此操作,否则大多数浏览器会将其视为内部链接并添加域名。