1

我想将事件处理程序附加到<span>处理当前选择的节点,但在单击事件触发之前,看起来好像选择已被浏览器清除(Chrome 16.0.912.63)。

我可以通过将处理程序附加到 以稍微凌乱的方式解决此问题onmousedown,但我宁愿不必那样做。

这是一个说明问题的简短 HTML 示例(需要 jQuery):

<span class="paste">PASTE</span>
<textarea id="selected"></textarea>

<script type="text/javascript">
  $('.paste').click(function(e) {
      var txt = window.getSelection(); // works only in Chrome, Safari, FF
      $('#selected').val(txt);
      e.stopPropagation();
  });
</script>

所需的行为是我能够使用鼠标选择一些文本,然后单击单词“PASTE”以将所选区域的内容插入到 textarea 中。看起来好像在单击处理程序触发之前清除了选择。如果我使用,这段代码就可以正常工作:

<a class="paste" href="#">PASTE</a>

而不是 span 元素,或者如果我 bind onmousedown,但我无法控制元素,所以我不能只使用 an<a>而不是 a <span>

4

2 回答 2

0

如果你从谷歌来到这里,这可能就是你想要的:handleonmousedown而不是onclick. 它写在帖子中,但如果你像我一样是一个懒惰的读者,你会略读并错过它。

于 2012-12-19T15:42:43.917 回答
0

快速而肮脏的解决方案是使用wrap()-

$('span.paste').wrap('<a class="paste" />');

然后您可以尝试将您的click事件附加到一个<a>有效的标签上(如您所述)

于 2012-01-03T20:49:43.807 回答