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

Sha*_*eer 4 javascript jquery javascript-events

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

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

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

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

Ari*_*les 8

看一下jQuery的代码(我看过1.7,但我认为它之前也可用)很容易使用以下命令从本机事件创建一个jQuery事件:

var jQueryEvent = jQuery.Event(event);
Run Code Online (Sandbox Code Playgroud)

  • 这不适合我,但jQuery.event.fix(事件)有帮助.请参见http://stackoverflow.com/questions/9508377/how-to-create-a-jquery-event-object-out-of-a-native-browser-event-object (2认同)

Tim*_*own 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);
};
Run Code Online (Sandbox Code Playgroud)

  • 我想有人不喜欢无需 jQuery 即可执行 JavaScript 的建议。 (2认同)