2012-01-12 44 views
1

是否有可能抛出一个div元素内的文本的jquery-select()事件? 这是我的例子,但它不工作。获取突出显示的文本 - 并导航到URL

<div id='id1'>Hello text</div> 
$("#id1").select(function() { 
    alert("something was selected"); 
}); 

我的目标是在文本中选择一个词,并把这个选择的单词在URL,并与这个网址打开一个新窗口。 例如我标记或者更确切地说,我选择的话打招呼,单词Hello应该在这个网址

window.open('http://dict.leo.org/ende?lp=ende&lang=de&searchLoc=0&cmpType=relaxed&sectHdr=on&spellToler=&search=Hello'); 

我不知道apear如果选择事件才是正道。 请帮忙。 抱歉我的英文不好!

+0

检查此问题:http://stackoverflow.com/questions/985272/jquery-selecting-text-in-an-element-akin-to-highlighting-with-your-mouse – Gabe 2012-01-12 22:02:51

回答

3

翻译的选定的(高亮显示)的文本部分

jsBin demo

function getSelRange() { 
    var notIE8 = window.getSelection; 
    var rng = notIE8 ? window.getSelection() : document.selection.createRange().htmlText; 
    return $.trim(rng); 
} 

$('#id1').mouseup(function() { 
    var selRange = getSelRange(); // THE HIGHLIGHTED TEXT PORTION 
    if(selRange) window.open('https://translate.google.com/#en/de/'+ selRange); // TRANSLATE 
}); 
<div id='id1'> 
    Please highlight a text range you want to translate. 
    Translating text is really cool. You should try it! 
</div> 

NBnotIE8意味着大于或等于IE8更低;)

P.S:如果您不使用jQuery,并且您需要支持较旧的浏览器,请确保使用onclick函数和a Polyfill for .trim();
像往常一样使用JS的addEventListener()String.prototype.trim()

2

不,jQuery.select()仅限于文本输入字段和textareas。

JavaScript有一些不同的选择:

if (window.getSelection) { 
    txt = window.getSelection(); 
} else if (document.getSelection) { 
    txt = document.getSelection(); 
} else if (document.selection) { 
    txt = document.selection.createRange().text; 
} else return; 
alert(txt); 

但你必须要绑定的是某种监听事件。大多数应用程序使用右键菜单或其他东西。

+0

非常感谢你。 – Pero 2012-01-12 22:29:05