劫持onchange事件,而不会干扰原有的功能
即时通讯编写我想包括在不同的网页谁可能已经使用onchange事件 - 有没有办法将我的事件附加到onchange而不删除原来的?劫持onchange事件,而不会干扰原有的功能
编辑:
onchange窗口obj。不仅仅是一个单一的元素 - onchange在网址中的哈希变化等。抱歉,如果我混淆了他们!
如果我是正确的,听起来像是要将新代码注入现有事件。如果你想要一个纯粹的JavaScript解决方案,这可能会对你有所帮助,这里有一个演示该功能的小提示。 http://jsfiddle.net/VZCve/1/
var element = document.getElementById("myElementId");
element.onchange = (function (onchange) {
return function(evt) {
// reference to event to pass argument properly
evt = evt || event;
// if an existing event already existed then execute it.
if (onchange) {
onchange(evt);
}
// new code "injection"
alert("hello2");
}
})(element.onchange);
编辑:现在,标签被改变,你参考的jQuery在你的问题
jQuery将继续使用jQuery.change().
注意以下将执行所有更改绑定的新功能分配的功能
$(document).ready(function() {
$("#myElement").change(function() { alert('executed') });
$("#myElement").change(function() { alert('executed again') });
$("#myElement").change(function() { alert('executed again again') });
});
当y触发选择器中元素的更改事件,您将收到3条警报。
注意事件触发的顺序取决于每个函数绑定到元素的顺序。
下面是一个简单的小提琴表明在jQuery的功能http://jsfiddle.net/VZCve/
使用jQuery的.change()
函数来分配onchange
处理程序不会覆盖现有的onchange
事件(或其他jQuery分配的处理程序)。在这里看到一个工作示范:http://jsfiddle.net/nrabinowitz/EyKdm/
较新的浏览器都有一个addEventListener
可以做,但 dean.edwards解决方案是更好的
与旧的浏览器更兼容
你可以也可以使用一个叫做数组的函数的事件函数(或多个函数)(正确地完成,您可以处理子函数的return
值,以决定是否要运行下一个函数,也可以使用cout S代表event
if(typeof element.onclickfunctions == "undefined"){
element.onclickfunctions = [];
}
element.onclickfunctions.push(function(event){return Myfunct(event);});//or var
element.onclick = function(event){
for(x in element.onclickfuncitons){
if(! x(event)){
break;
}
}
};
代码没有测试downvote
前请评论