Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将本机js事件对象转换为jquery事件对象_Javascript_Jquery_Javascript Events - Fatal编程技术网

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

Javascript 将本机js事件对象转换为jquery事件对象,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我想将本机JavaScript事件对象转换为jQuery事件对象 其实这就是问题所在: 我已经通过jQuery将事件处理程序绑定到文档keyup事件,页面上有一些文本框,通过内联JavaScript将keyup事件处理程序绑定到这些文本框 问题是,当文本框的事件处理程序被激发时,文档的事件处理程序也会被激发,因为事件“冒泡”我可以修改内联JavaScript绑定的事件处理程序函数,但不能修改该行本身 我正在寻找的是一个跨浏览器,一种取消事件冒泡的方法,这就是我想将其转换为jQuery对象的原因。

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

其实这就是问题所在: 我已经通过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)有帮助。看见