2012-01-23 50 views
1

我有一个锚列表项我怎样才能打开新的标签页网页JavaScript和中间点击

<li> 
    <a href="page"></a> 
    <span>description</span> 
    <span>count</span> 
</li> 

使用JavaScript,只要单击列表中的项目里面,窗口打开锚的href。

我想让浏览器知道,当它中间点击它可以将列表项目作为锚点对待,并打开一个新的选项卡。

我环顾四周,看到大多数人认为这不能完成,但我认为我的情况可能会有所不同。查看它的一种方法不是明确告诉浏览器打开一个新标签,而是告诉浏览器在使用中间点击时执行操作。

您认为如何?

编辑:更新了html以获得更准确的描述。锚点不是列表中的唯一元素

+0

我不明白这个问题......你想要一个默认行为吗?然后,只需使用链接和0 javascript ...(也许我不认识,因为英语不是我的自然语言...) – Vinze

+0

谢谢,锚点不是列表项中的唯一元素。这里有一些描述文字,这在语义上不是链接,但对于用户体验,我希望用户能够将其视为链接。 –

+0

这是没有理由不能包装在''元素的一切。 – zzzzBov

回答

0

好吧,不要说sayers :),我已经想通了如何做到这一点。

随着JS/jQuery我可以确定哪个按钮被按下。只有当按下中间按钮时,才可以将锚点上的目标值更改为“_blank”。

+0

您是如何使用'.click()'方法触发点击的?老版本的FireFox不支持'.click()'方法。 – gilly3

0

您希望列表项目可用作链接。最简单,最可靠的方法是去除JavaScript并应用CSS来使链接填充列表项。然后,任何点击列表项目将首先点击链接。 Listamatic has many examples

+0

谢谢,我已经更新了html以获得更准确的描述。该链接不是列表中的唯一元素 –

0

使用jQuery 1.7

$('ul').on('click', 'li', function(e){ 
    if(e.which == 2){ 
     var newWindow = $(this).find('a').attr('href'); 
     window.open(newWindow, 'newWindow'); 
     e.preventDefault(); 
    } 
}); 

就是这样。 jQuery将event.button标准化为event.which,因此您可以可靠地检测到中间点击。然后,只需打开一个新窗口。当然,不管它是否结束于新标签或新窗口完全取决于用户的浏览器偏好。

相关问题