Javascript 将本机js事件对象转换为jquery事件对象
我想将本机JavaScript事件对象转换为jQuery事件对象 其实这就是问题所在: 我已经通过jQuery将事件处理程序绑定到文档Javascript 将本机js事件对象转换为jquery事件对象,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我想将本机JavaScript事件对象转换为jQuery事件对象 其实这就是问题所在: 我已经通过jQuery将事件处理程序绑定到文档keyup事件,页面上有一些文本框,通过内联JavaScript将keyup事件处理程序绑定到这些文本框 问题是,当文本框的事件处理程序被激发时,文档的事件处理程序也会被激发,因为事件“冒泡”我可以修改内联JavaScript绑定的事件处理程序函数,但不能修改该行本身 我正在寻找的是一个跨浏览器,一种取消事件冒泡的方法,这就是我想将其转换为jQuery对象的原因。
keyup
事件,页面上有一些文本框,通过内联JavaScript将keyup
事件处理程序绑定到这些文本框
问题是,当文本框的事件处理程序被激发时,文档的事件处理程序也会被激发,因为事件“冒泡”我可以修改内联JavaScript绑定的事件处理程序函数,但不能修改该行本身
我正在寻找的是一个跨浏览器,一种取消事件冒泡的方法,这就是我想将其转换为jQuery对象的原因。您可以在页面加载后立即使用jQuery删除onclick或任何内联eventhandler属性,例如:
$(document).ready(function () {
$('#someInput').removeAttr('onclick');
});
然后附加事件处理程序以自定义行为。如果您只想防止事件冒泡,那么没有jQuery就很容易了。不要害怕走出jQuery的世界。这并不像有些人让你相信的那么复杂
function stopEventPropagation(evt) {
if (typeof evt.stopPropagation != "undefined") {
evt.stopPropagation();
} else {
evt.cancelBubble = true;
}
}
// Example
document.getElementById("yourInputId").onkeyup = function(evt) {
evt = evt || window.event;
stopEventPropagation(evt);
};
查看jQuery的代码(我查看了1.7,但我认为在这之前它也是可用的),使用以下方法从本机事件创建jQuery事件很容易:
var jQueryEvent = jQuery.Event(event);
如何将参数传递给它总共有两个?我想有人不喜欢这样的建议,即可以在不使用jQuery的情况下使用JavaScript。@Shaheer:有一个(4个向上,1个向下)。它真的不打扰我,我只是觉得它很奇怪。这对我来说不起作用,但jQuery.event.fix(event)有帮助。看见