2010-04-21 37 views
0

我试图通过点击或悬停在链接上来获取链接,以便能够获取属性href并确定链接是否为超链接。此外,我希望它能够告诉我,如果它超链接到我自己的网站。加上各种其他过滤器。在jQuery中查找超链接的链接

这样做的主要目的是当单击一个内部链接时它会告诉ajax抓取内容,我的链接很多都是通过wordpress生成的,所以我不能修改它们太多。另一个目的是让我可以在新窗口打开所有的外部链接。

我有一个解决方案,在一个简单的测试页面上工作,但当我把它放入工作页面中断。我知道我可能会更难以应付。

这里是我的代码

$(function(){ 
    $('a').live('click', function(){ 
     var x = $(this).attr('href'); 

     $(this).parent('div').append('<div id="test">' + x +'</div>'); 
     $('#test:contains("http")').css('color', 'red'); 
     $('#test:contains("sitename")').css('color', 'black'); 
     $('#test:contains("admin")').css('color', 'red'); 
     if($('#test').css('color') == 'red'){ 

     alert('external link'); 
     $('#test').remove(); 
     return true; 

     }else{ 

     alert('external link'); 
     $('#test').remove(); 
     return false; 

     } 
    }); 
}); 

感谢您的帮助

回答

1
$('a').live('click', function(){ 
    var href = $(this).attr('href'); 

    if(/http:\/\//.test(href) || /admin/.test(href)){ 
     //alert('external link'); 
     $(this).attr('target', '_blank'); 
     return(true); 
    } 

    if(/sitename/.test(href)){ 
     //alert('internal link'); 
     $.ajax({}); 
     return(false); 
    }  
} 

这是一个更好的方法我猜。应该工作,但没有经过检验。 正则表达式可以/并应该微调。如果您签选择API,你会发现一些更多的选择(例如用X结尾,包含X,等等)

$('a[href^=http://], a[href^=/admin/]').live('click', function(){}); 
$('a[href^=/sitename/]').live('click', function(){}); 

+0

一个更好的方法。谢谢你的魅力。 – 2010-04-21 07:28:29