我有一个可内容编辑的div
<div class="editable" contenteditable="true"></div>
用户可以在其中输入任何内容。当用户在 div 中进行选择时,有什么方法可以获取事件。
就像是:
$('.editable').onSelection(function(e, selection){alert(selection);}
我有一个可内容编辑的div
<div class="editable" contenteditable="true"></div>
用户可以在其中输入任何内容。当用户在 div 中进行选择时,有什么方法可以获取事件。
就像是:
$('.editable').onSelection(function(e, selection){alert(selection);}
你可以尝试这样的事情:
没有 'selectend' 事件,但我们可以通过观察 mouseup 事件来确定用户完成选择的时间
$(function () {
$('.editable').on('selectstart', function () {
$(document).one('mouseup', function() {
alert(this.getSelection());
});
});
});
在@Elliot 的回答和@Michael Bates 的评论之后,这似乎对于鼠标和键盘选择事件都完美无缺(例如在 TypeScript 中):
export function attachSelectionListener(element: HTMLElement) : void {
if (!element.contentEditable) {
return;
}
element.onselectstart = () => handleSelectionChange(element);
}
function handleSelectionChange(element: HTMLElement): void {
document.onmouseup = () => retrieveSelection(element);
document.onkeyup = () => retrieveSelection(element);
}
function retrieveSelection(element: HTMLElement) : void {
const selection = document.getSelection();
// Ignore empty selection
if (!selection || !selection.toString()) {
return;
}
alert(selection.toString());
}
在您的应用程序中使用它时,您可能想检查是否需要在某个时候再次删除侦听器。
$('#ta').select(function() {
alert('Handler for .select() called.');
});
.select( handler(eventObject) ) 返回: jQuery 将事件处理程序绑定到“select” JavaScript 事件,或在元素上触发该事件。
.select( handler(eventObject) ) handler(eventObject)每次触发事件时执行的函数。
.select( [eventData], handler(eventObject) ) eventData 将传递给事件处理程序的数据映射。handler(eventObject) 每次触发事件时执行的函数。
检查链接