jquery javascript覆盖/扩展事件
我有一个带有事件集的元素,例如jquery javascript覆盖/扩展事件,javascript,jquery,events,Javascript,Jquery,Events,我有一个带有事件集的元素,例如 <input type="text" id="txt" onkeyup="javascript: alert('keyup');" /> 但它并没有像我预期的那样起作用。有人知道怎么做吗 链接到小提琴: 如果输入的keyup事件不是内联的,而是使用jQuery绑定设置的,该怎么办? 我想覆盖/扩展默认行为,但不想更改基本代码 这是一把小提琴: jQuery未包含在资源中。此外,我还注释了一些您不需要的部分。创建您自己的自定义事件,然后触发它: $('
<input type="text" id="txt" onkeyup="javascript: alert('keyup');" />
但它并没有像我预期的那样起作用。有人知道怎么做吗
链接到小提琴:
如果输入的keyup事件不是内联的,而是使用jQuery绑定设置的,该怎么办?
我想覆盖/扩展默认行为,但不想更改基本代码 这是一把小提琴:
jQuery未包含在资源中。此外,我还注释了一些您不需要的部分。创建您自己的自定义事件,然后触发它:
$('#txt').bind('custom', function(event) {
alert("before old call");
//old.call($(this));
alert("after old call");
});
$('#txt').trigger('custom', ['Custom', 'Event']);
你可以在这里找到它的信息:我把你的小提琴叉到了这里: 我启用了jQuery而不是MooTools,但也使用.get(0)来获取实际的dom元素,该元素定义了onkeyup函数 脚本:
jQuery(document).ready(function() {
var old = $("#txt").get(0).onkeyup;
$("#txt").unbind('keyup').attr('onkeyup', '').each(function() {
this.onkeyup = null;
});
$("#txt").keyup(function(event) {
alert("before old call");
old.call(this);
alert("after old call");
});
});
它对我来说很好,您忘了在JSFIDLE中包含jQuery。那通电话会不会删除VeveEventListener?非常感谢@CodeReaper下面的回答也很有帮助。我似乎忘记了jQuery返回匹配元素的集合。为什么要查询
DOM
两次?您对old
@gdoron不做任何操作:old
保留旧的句柄,以备以后恢复。当然,您不需要两次查询DOM。这是一个快速的示例,而不是可用于生产的代码。
$('#txt').bind('custom', function(event) {
alert("before old call");
//old.call($(this));
alert("after old call");
});
$('#txt').trigger('custom', ['Custom', 'Event']);
jQuery(document).ready(function() {
var old = $("#txt").get(0).onkeyup;
$("#txt").unbind('keyup').attr('onkeyup', '').each(function() {
this.onkeyup = null;
});
$("#txt").keyup(function(event) {
alert("before old call");
old.call(this);
alert("after old call");
});
});