2010-04-21 55 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