【问题标题】:How do you click text that's inside a hyperlink so you can drag and highlight it?如何单击超链接内的文本以便拖动并突出显示它?
【发布时间】:2011-08-15 11:52:31
【问题描述】:

如果您有一段普通文本,您可以单击文本内的任意位置并拖动鼠标以突出显示它。但是,如果文本位于锚点/链接标签内,则不允许您单击和拖动——链接会抓住鼠标并阻止它发生。

要明白我的意思,请在此页面上找到一个文本链接,然后尝试在其中单击并拖动以选择它。它不会让你 - 你必须点击链接外部并拖动它。

您需要在 JavaScript/JQuery 中做些什么来暂时禁用链接足够长的时间以便您拖动并突出显示它?

我不能只在链接之外开始的原因是因为段落中的每个单词都在一个超链接内——它是一个视频脚本,每个链接都同步到视频中的一个片段。

【问题讨论】:

  • 在 Firefox 中,使用 Alt 键。
  • @Julien 谢谢 - 从来不知道这一点。我总是在链接之外开始

标签: javascript jquery


【解决方案1】:

我的第一个想法是做这样的事情:

$("a").each(function() {
   $(this).replaceWith("<span class='link' data-href='" + $(this).attr("href") + "'>" + $(this).text() + "</span>"); 
});
$(".link").click(function() {
   window.location = $(this).data("href"); 
});

但是,可能有更好的方法来做到这一点。上面的代码将所有a元素转换为span元素,保留href属性值,然后将类“link”的span元素作为链接起作用。您可以设置 span 元素的样式,使其看起来像您页面上当前的 a 元素。

这是上面的example 的实际操作。

【讨论】:

  • 是的,这行得通。我想我可以预处理所有的成绩单并将锚点转换为跨度标签,然后像这样将它们加载到数据库中。但现在我很想弄清楚链接的哪一部分控制该机制,看看它是否可以在保持链接的同时完成:)
  • @espeed - 是的,我也很好奇。但是,除了答案中的代码之外,我所有的实验都失败了……如果我发现任何东西,我一定会更新答案。
【解决方案2】:

您可以尝试this solution,将原始文本加载到变量中,然后恢复它们。

但这似乎太混乱了。有时更简单的解决方案会更好。

为什么不设置两个段落并在用户单击按钮时设置 visibiltiy='hidden' 以隐藏带链接的段落并显示不带链接的段落?

页面重量似乎不是问题,因为无论如何您都在加载视频。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多