2010-07-01 60 views
1

我试图创建一个指向URL 1的链接,当按住Shift键时链接指向URL 2。我到达了这个代码示例,它正确地切换链接(如悬停在链接上时的浏览器状态栏中所示),但单击URL 2不起作用:浏览器不会执行任何操作。这是正确的:一个链接是存在的,但点击它只是没有做任何事情。jQuery:修改器关闭时链接改变 - 但链接停止工作

在Firefox 3.6.6和Safari 5.0中尝试了这一点,结果都一样。

任何提示?谢谢!

<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script> 
<script> 
$(document).keydown(function(event) { 
    if (event.keyCode == '16') { 
    $("#mylink").text("My Link Extended"); 
    $("#mylink").attr("href", "http://www.google.com/"); 
    } 
}); 
$(document).keyup(function(event) { 
    if (event.keyCode == '16') { 
    $("#mylink").text("My Link"); 
    $("#mylink").attr("href", "bla"); 
    } 
}); 
</script> 
<a href="normalurl" id="mylink">My Link</a> 
+1

Shift +点击链接打开一个新的浏览器窗口,也许这里有一个问题? – 2010-07-01 14:24:50

回答

2

看来,浏览器得到了一点点太忙更新DOM,同时按下Shift键,所以我把标志的地方:

<script type="text/javascript"> 
    $(document).ready(function() { 
    var ExtendedLinkShown=false; 

    $(document).keydown(function(event) { 
     if (!ExtendedLinkShown && event.keyCode == '16') { 
     $("#mylink").text("My Link Extended"); 
     $("#mylink").attr("href", "http://www.google.com/"); 
     ExtendedLinkShown=true; 
     } 
    }); 
    $(document).keyup(function(event) { 
     if (event.keyCode == '16') { 
     $("#mylink").text("My Link"); 
     $("#mylink").attr("href", "bla"); 
     ExtendedLinkShown=false; 
     } 
    }); 
    }); 
</script> 

现在唯一的问题是 - 正如罗曼Deveaud指出 - SHIFT +点击打开一个新的浏览器窗口。

+0

Brillant,就像一个魅力!谢谢! – CruftyCraft 2010-07-05 07:27:20

+0

好东西。谢谢。 :) – 2010-07-05 13:02:34

0

看起来像是因为按住Shift键Dom认为“浏览器”会处理特殊请求。以便当命令发送到DOM时打开它失败。

我做了一些测试,并拿出了这个。

<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script> 
<script> 
$(document).keydown(function(event) { 
    if (event.keyCode == '16') { 
     event.keyCode = null; //Remove that 
    $("#mylink").text("My Link Extended"); 
    $("#mylink").attr("href", "http://www.google.com/"); 
     event.keyCode = '16'; //Add it back 
    } 
}); 
$(document).keyup(function(event) { 
    if (event.keyCode == '16') { 
    event.keyCode = null; //Remove that 
    $("#mylink").text("My Link"); 
    $("#mylink").attr("href", "bla"); 
    event.keyCode = '16'; //Add it back 
    } 
}); 
</script> 
<a href="normalurl" id="mylink">My Link</a> 

而这似乎在谷歌浏览器中工作,但很hacky。

+0

我也这么认为,但是即使使用像“a”(键65)这样的常规键而不是移位,问题仍然存在。 感谢您的示例,但不幸的是它不适用于Firefox或Safari。 – CruftyCraft 2010-07-01 14:39:34