2014-04-27 164 views
0

所以,我的页面上有一些链接(< a> type),标有不同的ID-s。他们有这些属性:!禁用链接,点击后

  1. ID - 每一个环节
  2. HREF的唯一ID - 的URL,将在新标签中打开/重要 - >这个链接需要在新标签中打开/
  3. 目标=“_空白” - 用于链接在新标签页

如此开放,链接看起来像:

<a id="a1" href="thelink" target="_Blank">Link1</a> 
<a id="a2" href="thelink" target="_Blank">Link2</a> 
<a id="a3" href="thelink" target="_Blank">Link3</a> 
etc.. 

我要当一条链路为c舔,网址在新标签中打开,并在原来页面的链接被禁用,但不是这样的:

<a id="a3" href="#" target="_Blank">Link1</a 

我试着使用的onclick删除“href”属性和的onclick清空“href”属性,但链接并未打开,因为onclick首先触发并删除“href”元素,然后在新选项卡中打开链接并且效果不是我想要的效果。 有一些想法家伙?

+0

如果删除href属性,则A元素不再是链接,而是具有不同默认样式的锚点。 – RobG

回答

0

你可以像下面这样做

<a id="a3" href="http://stackoverflow.com" onclick="a(this);">Link3</a> 
<a id="a4" href="http://google.com" onclick="a(this);">Link4</a> 
<a id="a5" href="http://wikipedia.org" onclick="a(this);">Link5</a> 

    <script> 
     function a(t) { 
     var href = t.getAttribute("href"); 
     if(href==null || href=="") return; 
     window.open(href,'_blank'); 
     t.removeAttribute("href"); 
     } 
    </script> 
+0

这不起作用 – user3214661

+0

href属性的值是一个字符串,所以'href == null'将始终为false。你可能意思是'if(href =='')'。 – RobG

+0

对我来说,它工作得很好。我在铬上尝了一下。只需在html标签后面添加javascript代码即可。 – Paramore

0

如何

window.onload=function() { 
    document.getElementById("a1").onclick=function() { 
    setTimout(function() {document.getElementById("a1").disabled=true;},10) 
    } 
} 
+0

HTML5似乎没有提及[* A元素*]的禁用属性(http://www.w3.org/html/wg/drafts/html/master/text-level-semantics.html#the-a -元件)。 – RobG

0

您可以使用一个类名称作为指标

http://jsfiddle.net/pyQV2/

在此不必通过事件例子中,我添加了每个链接的一个类,只是为了表明它的目标函数。然后,在页面加载时,我会为每个链接附加一个onclick事件。

var links = document.getElementsByClassName('notclicked'); 

for (var i=0; i<links.length; i++) { 
    links[i].onclick = function(e) { 
     if (e.target.className == 'notclicked') 
      e.target.className = 'clicked'; 
     else { 
      if (e.preventDefault) 
       e.preventDefault(); 
      else /* for IE */ 
       e.returnValue = false; 
     } 
    } 
} 

如果它有旧的类,只需将它改为将来的点击。如果它有新课程,请停止活动。