选择href不以http开头

时间:2010-05-31 02:13:27

标签: jquery jquery-selectors

使用jQuery我试图找出用户输入的所有不以http或https开头的URL,最后我想在所有这些URL之前添加http,这样当用户点击它们时,它们就被带到了正确的位置。站点而不是由于输入没有http或https的URL而导致链接断开。

还要提到用户有一个“他们喜欢的网站”字段,他们进入他们感兴趣的网站。因此,如果他们喜欢stackoverflow,他们最终可能会写www.stackoverflow.com,这将被视为没有http的相对链接。

此外,我的要求是,我无法提示用户在网址之前输入http或https

3 个答案:

答案 0 :(得分:4)

如果您希望“修补”已经渲染的锚标记的URL以包含http://,您可以使用以下内容来运行它们:

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

编辑:修改为使用每个()。 编辑:修改为处理http和https。

答案 1 :(得分:0)

我知道我做错了什么我也用过


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

所以选择器工作正常,但'http://'+ $(this).attr('href')无效。当我用$('a:not([href ^ =“http://”])替换$(this)时,它起作用了。但现在我很困惑,为什么$(这)不会工作

答案 2 :(得分:0)

清洁和正确

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