这是一个无需在文档中添加大量跨度即可使用的解决方案(适用于Webkit,Mozilla和IE9 +):
<p >some words</p>$(".clickable").click(function(e) { s = window.getSelection(); var range = s.getRangeAt(0); var node = s.anchorNode; while (range.toString().indexOf(' ') != 0) { range.setStart(node, (range.startOffset - 1)); } range.setStart(node, range.startOffset + 1); do { range.setEnd(node, range.endOffset + 1); } while (range.toString().indexOf(' ') == -1 && range.toString().trim() != '' && range.endOffset < node.length); var str = range.toString().trim(); alert(str);});在IE8中,由于存在getSelection,因此出现了问题。该链接getSelection()是否有跨浏览器的解决方案?可能有助于解决这些问题。我还没有在Opera上测试过。
s.modify('extend','forward','word');s.modify('extend','backward','word');不幸的是,他们并不总能理解整个词。作为一种解决方法,我得到了Range进行选择,并添加了两个循环以查找单词边界。第一个一直在单词中添加字符,直到到达空格为止。第二个循环到达单词的末尾,直到到达一个空格。
这也会在单词的末尾出现标点符号,因此请确保在需要时将其删除。



