2010-05-31 331 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')); 
    }); 
}); 
相关问题