65

jQuery 文档说该库内置支持以下事件:blur、focus、load、resize、scroll、unload、click、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、select、提交、keydown、keypress、keyup 和错误。

我需要处理剪切、复制和粘贴事件。如何最好地做到这一点?FWIW,我只需要担心 WebKit(我很幸运!)。

更新:我正在类似仪表板的环境中开发“小部件”。它使用 WebKit,因此(就我的目的而言)是否支持这些事件真的很重要,看起来确实如此。

4

4 回答 4

92

.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 事件插件”...jquery.event.wheel.jsBrandon Aaron 的鼠标滚轮插件

于 2008-10-27T00:11:37.853 回答
14

Javascript 中提供了各种剪贴板事件,但支持参差不齐。QuicksMode.org 有一个兼容性网格测试页面。这些事件不通过 jQuery 公开,因此您必须扩展库或使用本机 Javascript 事件。

于 2008-10-26T01:06:52.953 回答
9

Mozilla 支持“输入”事件,我无法找到有用的文档。至少,我知道它会在粘贴时触发。

   this.addEventListener('input',
    function(){//stuff here},
    false
   );
于 2008-10-27T19:37:49.980 回答
1

作为 jQuery 1.7,您可以使用bind(...)unbind(...)方法分别附加和删除处理程序。

以下是对齐您的问题的示例:

$('#someElementId').bind('paste', function(){return false;});

- 这将阻止任何从剪贴板粘贴到元素主体的尝试。您还可以使用cutcopy和其他作为事件类型(请参阅下面的链接)

$('#someElementId').bind('copy', function(){return alert('Hey fella! Do not forget about copyrights!');});

因此,在其他情况下,当您想要删除这些处理程序时,您可以使用unbind()方法:

$('#someElementId').unbind('copy');

这里有一些有用的链接:

于 2015-09-02T16:07:19.107 回答