2017-05-01 35 views
1

我有一个<ul><li><a>结构,非常具体风格化,并有9个元素分为3列。我想添加另一个项目而不创建第四列,因此我正在考虑的解决方案是在一个“插槽”中有2个链接。2链接在一个锚

问题在于<ul><li><a>的结构使得添加一个<a>将自动创建另一个槽(垂直)。

为了适应这种变化,我希望不必重新创建整个结构,所以我试图想出一个黑客攻击。

我知道这是丑陋和怪异,但它确实使为atleast一个有趣的问题......

我试图做:

<a href="link1.html">link1 <span onclick="location.href ='link2.html'">link2</span></a> 

但是,这并不工作 - 我也试过用jQuery但那也没用。这里是否存在解决方法/破解或我必须重构整个列表?

+1

你能举一个你正在努力实现的完整例子吗? – empiric

+2

您需要[停止传播](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Examples#Example_5:_Event_Propagation)点击到父锚元素。不幸的是,使用'onclick'属性没有简单的方法。 – Blazemonger

+0

@Blazemonger是的。 ''并在函数内部调用'event.stopPropagation()'。 – mhodges

回答

0

$('#link2').click(function() { 
 
    window.setTimeout(function() { 
 
    location.href = $('#link2').attr('data-href') 
 
    }, 10) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="link1.html">link1 <span id='link2' data-href="link2.html">link2</span></a>

+0

您应该使用准确表示原始问题的代码。 – Blazemonger

+0

@Blazemonger当你的编辑未经我的同意而更新时,它确实很奇怪:) – Ninjaneer

+0

可能是我错了。我以为他想要两个hrefs ..这就是为什么他加了一个额外的'span'。他可以添加它作为另一个属性,可能是'href2'到相同的'a'标签 – Ninjaneer

1

这里有一个快速简便的方法有aspan元素带你到不同的链接。 (I注释掉实际链路和使用警报来代替,因为链接不会在帧加载反正。)

function goToLink(e, that) { 
 
    e.stopPropagation(); 
 
    if (that.tagName.toUpperCase() == "A") { 
 
    // if anchor was clicked 
 
    alert("1st link"); 
 
    //window.location.href = "http://www.google.com"; 
 
    } 
 
    else { 
 
    // if span was clicked 
 
    alert("2nd link"); 
 
    //window.location.href = "http://www.yahoo.com"; 
 
    
 
    } 
 
}
<a href="#" onclick="goToLink(event, this);">link1 <span onclick="goToLink(event, this);">link2</span></a>

stopPropagation()呼叫阻止加载当第二第一链路链接被点击。