2010-05-31 106 views
1

使用jQuery我試圖找出所有用戶輸入的URL,它們不是以http或https開頭,最後我想預先指定所有這些URL的http,以便當用戶點擊它們時他們將被帶到一個合適的網站,而不是由於沒有http或https的URL輸入而導致鏈接斷開。選擇href不以http開頭

此外,還要提及的是,用戶有一個字段「他們喜歡的網站」,他們進入他們感興趣的網站。所以如果他們喜歡stackoverflow,他們可能會寫作www.stackoverflow.com這將被視爲沒有http的相對鏈接。

而且我的質量要求是這樣的,我不能提示用戶輸入HTTP或HTTPS的網址有

+0

在某些類型的數據結構的這些網址嗎?表單字段?你只是想在點擊錨標籤時「修補」這些URL嗎? – 2010-05-31 02:18:25

+0

這些是用戶個人資料頁面上的URL。我只是想實現的是,如果url href沒有http(s)點擊時它不應該給一個斷開的鏈接,而是採取該網址。像這個鏈接Google在這裏,當用戶點擊其採取破碎的頁面 – 2010-05-31 02:24:26

回答

4

之前,如果你正在尋找「補丁」已呈現錨標籤的網址包含http://,你可能可以通過這樣的事情來運行它們:

$(document).ready(function(){ 
    $('a:not([href^="http://"]):not([href^="https://"])').each(function(){ 
     $(this).attr('href', 'http://' + $(this).attr('href')); 
    }) 
}) 

編輯:修改爲使用each()。 編輯:修改爲處理http和https。

+0

這是我寫的確切;它沒有爲我工作,你試過 – 2010-05-31 02:30:55

+0

只是忘了https和http。想象它的http鏈接仍然是你編寫的代碼行不起作用。 – 2010-05-31 02:40:55

+0

上述代碼在編輯之後,在我拼湊在一起的快速測試頁上工作。我的測試包括一個沒有協議的鏈接,一個使用http://到位,另一個使用https://到位。如果它不適合你,你可以發佈更多頁面嗎? – 2010-05-31 02:46:48

0

我知道我在做什麼錯了我也是用


$(document).ready(function(){ 
    $('a:not([href^="http://"])').attr('href', 'http://' + $(this).attr('href')); 
}) 

所以選擇工作正常,但的「http://」 + $(本).attr(「href」屬性)不加工。當我用$('a:not([href^=「http://」])')替換$(this)時,它就起作用了。但現在我很困惑,爲什麼$(這)不會工作

+1

是的,這就是爲什麼我切換到使用each() - $(this)的上下文是「document」,而不是選擇器。上面的方法可能會導致問題,因爲您正在構建一組新的選定對象,而不是關注所選定位標記。 – 2010-05-31 02:52:05

+0

能否請您詳細說明這個文件的上下文。我沒有跟着它。我將如何知道上下文。 – 2010-05-31 02:58:26

+0

我也沒有跟着; 「因爲你正在構建一組新的選定對象,而不是關注所選定位標記。」請解釋 – 2010-05-31 02:59:54

0

清潔和適當

$(document).ready(function(){ 
    $('a:not([href^="http://"], [href^="https://"])').each(function(){ 
      $(this).attr('href', 'http://' + $(this).attr('href')); 
    }); 
}); 
相關問題