我想将本机JavaScript事件对象转换为jQuery事件对象。
实际上这是问题所在:
我已经通过jQuery将事件处理程序绑定到文档keyup
事件,并且页面上有一些文本框,通过内联JavaScript绑定keyup
事件处理程序。
问题是当文本框的事件处理程序被触发时,文档的事件处理程序也会被触发,因为事件“冒泡”我可以修改由内联JavaScript绑定的事件处理函数,但不能修改该行本身。
我正在寻找的是一个跨浏览器,一种取消事件冒泡的方法,这就是我想将它转换为jQuery对象的原因。
答案 0 :(得分:6)
如果您只想阻止事件冒泡,那么没有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);
};
答案 1 :(得分:0)
您可以在页面加载后立即使用jQuery删除onclick或任何内联的eventhandler属性,例如:
$(document).ready(function () {
$('#someInput').removeAttr('onclick');
});
然后附加您的事件处理程序以自定义行为。