使用mouseup事件选择文本,使用调用函数选择dbclick事件
Select text with mouseup event and dbclick event with call a function
我寻找jquery选择文本事件,我发现了这个例子。在这个例子中,mouseup事件和dbclick事件一样有效。
我添加一个函数到这个代码返回值,但现在dbclick不工作。jsFiddle
if (!window.James) {James = {};}
James.Selector = {};
James.Selector.mouseup = function (e) {
var userSelection;
if (window.getSelection) {
userSelection = window.getSelection();
}
else if (document.selection) {
// should come last; Opera!
userSelection = document.selection.createRange();
}
var selectedText = userSelection;
if (userSelection.text) selectedText = userSelection.text;
if (selectedText != '') {
return selectedText + '------' + e.pageX + '/' + e.pageY;
}
}
$(document).ready(function () {
$(document).bind("mouseup", function (e) {
alert(James.Selector.mouseup(e))
window.getSelection().removeAllRanges();
});
});
我想你的意思是这样的:http://jsfiddle.net/WBLQz/11/
只要设置一个setTimeout()
,让它能够为dblclick。
引起问题的语句是这样的:我们称它为"problem statement": if (selectedText != '') {
中,一旦满足此条件,程序就输出警报。因此,通过这两个代码…
点击:
原始代码到达问题语句,不输出警报,因为没有选择
你的代码到达问题语句并且不返回值,因为问题语句失败,但是你的警报语句总是执行。
因此,在原始代码中,似乎函数在双击时被调用,而不是在单击时被调用。这不是真的,它总是被执行。但是现在的浏览器,"双击"会突出显示空白或字符之间的字符串,因此(selectedText != '')
您可以在执行警报之前使用一个简单的if语句来修复这个问题
$(document).ready(function () {
$(document).bind("mouseup", function (e) {
if (James.Selector.mouseup(e) !== undefined)
alert(James.Selector.mouseup(e))
});
window.getSelection().removeAllRanges();
});
其中if (James.Selector.mouseup(e) !== undefined)
将只执行警报,如果选择的东西,或双击。
请注意我移动了语句:window.getSelection().removeAllRanges();
在绑定函数之外,因此在关闭警报后不会擦除所选内容。
相关文章:
- 取消拖动&选择事件
- 选择同一文件时未触发HTML输入文件选择事件
- jQuery UI 选项卡取消选择事件或在选择时保存上一个选项卡
- 收听单选按钮取消选择事件而不知道按钮's上下文(骨干视图)
- 如何使用show hint插件在CodeMirror中订阅选择事件
- 为什么jQuery选择事件监听器会多次触发
- typeahead选择事件(jQuery)的动态绑定
- 在选择事件上引导日期时间选取器
- 从嵌套函数中选择事件目标
- 如何在 LI 上触发“选择”事件,由其 ID 标识
- 在动态创建的 DHTMLX 网格上附加行选择事件
- 如何在jquery中传递文件选择事件
- 如何检测单选按钮取消选择事件
- 从下拉菜单中选择事件 - 仅限 Javascript
- 无法检测加载时的选择/下拉列表选择事件
- 从下拉菜单中选择事件后的选项
- jQuery 选项取消选择事件
- 选择事件并将其应用于动态元素
- HTML 文件输入框不会触发文件选择事件并在更改事件 - angularJS 中警告
- jQuery - jquery 自动完成选择事件后的文本字段值更改