我有一个带有事件集的元素,例如
<input type="text" id="txt" onkeyup="javascript: alert('keyup');" />
现在,我想拦截此事件并运行除默认脚本之外的其他脚本。 我写了以下代码:
jQuery(document).ready(function(){
var old = $("#txt").keyup;
$("#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");
});
});
但它并没有像我预期的那样工作。有人知道如何让它工作吗?
fiddle 链接:http://jsfiddle.net/p5JeA/
如果输入的 keyup 事件不是内联的,而是使用 jQuery 绑定(bind)设置的怎么办? 我想覆盖/扩展默认行为,我不想更改基本代码。
最佳答案
这是一个工作 fiddle :http://jsfiddle.net/mrchief/p5JeA/2/
var old = $("#txt")[0].onkeyup;
$("#txt")[0].onkeyup = null; // or function () {};
// or $("#txt").removeAttr('onkeyup');
jQuery 未包含在资源中。另外,我注释掉了一些您不需要的部分。
关于javascript - jquery javascript 覆盖/扩展事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7030872/