即時通訊編寫我想包括在不同的網頁誰可能已經使用onchange事件 - 有沒有辦法將我的事件附加到onchange而不刪除原來的?劫持onchange事件,而不會干擾原有的功能
編輯:
onchange窗口obj。不僅僅是一個單一的元素 - 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
前請評論