使用jQuery的.select()方法如何获取文本高亮部分?

8

我正在尝试这里找到的示例代码http://api.jquery.com/select/

$(":input").select( function () { 
      $("div").text("Something was selected").show().fadeOut(1000); 
    });

现在我的问题是,我是否可以获取确切的选定文本,而不是打印“已选择某些内容”?

我想要针对jQuery .select() 的具体答案。我从这里得到了其他解决方案。


你解决了你的问题吗?我已经发布了一个答案,会帮助你的。 - Soojoo
3个回答

10

.select()与获取实际选择文本无关。Select就像.click()一样:是将处理程序函数绑定到选择事件的一种简单,快捷方式。

正如API文档中所述:

检索当前选定文本的方法因浏览器而异。许多jQuery插件提供跨平台解决方案。

因此,您可以使用element.select(...)(或更好的做法,element.on("select", ...))进行绑定,然后使用众多跨平台解决方案之一来检索所选内容。这是基本思路:http://jsfiddle.net/NjW5a/3/


5

.Select() 看起来只是在选择特定元素时会触发的事件。但是,要获取文本,您需要使用JavaScript的window.getSelection()函数。

这里是一个示例:http://jsfiddle.net/BCv4Y/3/

    $(":input").select( function () { // on selection, show what's selected
        $("div").text(window.getSelection()).show().fadeOut(1000); 
     }

});

也许,如果新版本的jquery带有类似于$(this).selectedVal()的功能,将会很棒。希望这可以帮助您。

1
Ithcy是正确的。IE不支持window.getSelection()函数,因此我们将不得不使用像他在jsfiddle中提到的getSelected函数这样的跨平台解决方案。http://jsfiddle.net/NjW5a/3/(来源:Ithcy ^^) - Ellipsis

0
 <script>
window.onmouseup = mouseup;
function mouseup() {
 getSelText();
 }
</script>
   <script  type="text/javascript">
function getSelText() {
var txt = '';
if (window.getSelection) {
    alert (window.getSelection());
} else if (document.getSelection) {
   alert (document.getSelection());
   } else if (document.selection) {
     alert( document.selection.createRange().text);

 } else return;

 }
</script>  

OP说:“我想要jQuery .select()的具体答案。”这似乎没有使用.select(),因此对于这个特定的问题来说并不是真正有用的答案。 - Sumurai8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接