jQuery documentation表示该库内置了对以下事件的支持:模糊,聚焦,加载,调整大小,滚动,卸载,单击,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter, mouseleave,change,select,submit,keydown,keypress,keyup和error。
我需要处理剪切,复制和粘贴事件。怎么做到最好? FWIW,我只需要担心WebKit(幸运的是我!)。
更新:我正在类似仪表板的环境中处理“小部件”。它使用WebKit,所以它(这是为了我的目的)是否真的很重要,这些事件是否得到支持,看起来就像它们一样。
答案 0 :(得分:90)
您可以使用.on()
和off()
方法添加和删除任何类型的事件
试试这个,例如
jQuery(document).on('paste', function(e){ alert('pasting!') });
jQuery实际上对浏览器是否支持您指定的事件类型无动于衷,因此您可以将任意事件类型分配给元素(和常规对象),例如:
jQuery('p').on('foobar2000', function(e){ alert(e.type); });
如果是自定义事件类型,您必须在代码中“手动”.trigger()
,例如:
jQuery('p').trigger('foobar2000');
整洁呃?
此外,要以跨浏览器兼容的方式使用专有/自定义DOM事件,您可能需要使用/编写“jQuery事件插件”...其示例可以在 {{3中看到布兰登·亚伦的jquery.event.wheel.js
答案 1 :(得分:14)
Javascript中提供了各种剪贴板事件,但支持很多。 QuicksMode.org有compatibility grid和test page。事件不是通过jQuery公开的,因此您必须扩展库或使用本机Javascript事件。
答案 2 :(得分:7)
Mozilla支持“输入”事件,我无法找到有用的文档。至少,我知道它会粘贴。
this.addEventListener('input',
function(){//stuff here},
false
);
答案 3 :(得分:1)
作为jQuery 1.7,您可以使用 bind(...)和取消绑定(...)方法来附加和删除处理程序。
以下示例对齐您的任务:
$('#someElementId').bind('paste', function(){return false;});
- 这个会阻止任何从剪贴板粘贴到元素主体的尝试。您还可以使用剪切,复制和其他人作为事件类型(请参阅下面的链接)
$('#someElementId').bind('copy', function(){return alert('Hey fella! Do not forget about copyrights!');});
因此,在其他情况下,当您想要删除这些处理程序时,可以使用 unbind()方法:
$('#someElementId').unbind('copy');
这里有一些有用的链接: