链接可从中间选择

时间:2012-01-06 09:01:54

标签: jquery html css

如何在不触发鼠标点击的情况下,像普通文本一样选择链接?

可以从中间轻松选择未链接的文本。如果用户按住鼠标,我想让链接可选,但如果只需单击一下,就可以正常打开链接。

2 个答案:

答案 0 :(得分:5)

此行为由浏览器定义,因此您无法做到这一点。我相信有些浏览器允许你从任何一点(Opera?)中选择锚文本,而不仅仅是开始和结束,但这对你没什么用。

如果您确实想要更改默认浏览器行为(这很少是一个好主意),请继续阅读...

一个可能的解决方案可能是不使用a元素,而是使用类似span的内容。为每个span链接指定一个公共类并存储预期的URL:

<span class="linkSpan" data-link="http://www.example.com">This is a link</span>

然后使用JavaScript(你用jQuery标记了这个问题,所以我将在这里使用jQuery)来重定向用户:

$(".linkSpan").click(function() {
    window.location = $(this).data("link");
});

显然,您需要适当地设置.linkSpan样式,使其看起来更像是一个实际链接。

更新(关注@Madmartigan的评论) - 如果在光标未在链接上方时按住鼠标按钮,然后移动链接本身,您可以从内部的任何一点开始选择文本链接。我至少在Chrome中管理过它。

答案 1 :(得分:2)

如果您要这样做,请不要使用<span>冒充链接来删除HTML。您使用的是javascript,因此只需使用javascript从链接中删除href并将其值附加到onclick事件。

像这样(使用jQuery):

$('a').each(function(){
    var href = $(this).attr('href');
    $(this).removeAttr('href'); // Now the link is "more selectable"
    $(this).click(function(){
        top.location = href;
    });
});

更容易访问,不会强迫您编写伪造的HTML。链接应使用<a>标记进行标记。演示:http://jsfiddle.net/phbt4/1/

您必须在这些链接上指定样式,以确保它们看起来像链接而不是依赖于浏览器默认值,因为删除href属性会产生这种影响。