将本机js事件对象转换为jquery事件对象

时间:2010-12-19 11:08:20

标签: javascript jquery javascript-events

我想将本机JavaScript事件对象转换为jQuery事件对象。

实际上这是问题所在: 我已经通过jQuery将事件处理程序绑定到文档keyup事件,并且页面上有一些文本框,通过内联JavaScript绑定keyup事件处理程序。

问题是当文本框的事件处理程序被触发时,文档的事件处理程序也会被触发,因为事件“冒泡”我可以修改由内联JavaScript绑定的事件处理函数,但不能修改该行本身。

我正在寻找的是一个跨浏览器,一种取消事件冒泡的方法,这就是我想将它转换为jQuery对象的原因。

2 个答案:

答案 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');

});

然后附加您的事件处理程序以自定义行为。