编辑:
在窗口obj上的onchange。不仅是一个单独的元素 - 在URL中的哈希变化中的onchange等等。抱歉,如果我混淆了它们!
答案 0 :(得分:7)
如果我是正确的,听起来你想要将新代码注入现有事件中。如果你想要一个纯粹的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') });
});
当您在选择器中触发元素的更改事件时,您将收到3个警报。
注意事件触发的顺序取决于每个函数绑定到元素的顺序。
这是一个简单的小提示,展示了jQuery http://jsfiddle.net/VZCve/
中的功能答案 1 :(得分:2)
使用jQuery的.change()
函数来分配onchange
处理程序不会覆盖现有的onchange
事件(或其他jQuery分配的处理程序)。请在此处查看工作演示:http://jsfiddle.net/nrabinowitz/EyKdm/
答案 2 :(得分:0)
较新的浏览器有addEventListener
可以做到但是
dean.edwards解决方案更好
与旧浏览器更兼容
你也可以使用一个costem eventhandeler(s)调用数组的函数(正确完成你可以处理子函数的return
值来决定你是否要运行下一个函数,也可以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之前发表评论