0

例:

domNode.onmouseover = function() {
  this.innerHTML = "The mighty mouse is over me!"
}
domNode.onmouseover = function() {
  this.style.backgroundColor = "yellow";
}

この例では、テキストは変更されません。しかし、以前に何が割り当てられたかが常にわからないということもあります。そのため、jsに指示する方法はあります。最終的に割り当てられたものをすべて実行し、それが何であるかを知らずに、関数を実行しますか?

4

2 に答える 2

1

これを行うには、現在のイベントハンドラーを新しいハンドラーに渡します。

domNode.onmouseover = function()
{
    console.log('first handler');
}
domNode.onmouseover = (function (current)
{
    return function()
    {
        current();//call handler that was set when this handler was created
        console.log('new handler');
    };
})(domNode.onmouseover);//pass reference to current handler

このフィドルを見て、実際の動作を確認してください。
これを好きなだけやり続けることができます。

domNode.onmouseover = function()
{
    console.log('first handler');
}
domNode.onmouseover = (function (current)
{
    return function()
    {
        current();
        console.log('second handler');
    };
})(domNode.onmouseover);
domNode.onmouseover = (function (current)
{
    return function()
    {
        current();
        console.log('third handler');
    };
})(domNode.onmouseover);

これはログに記録されます:

first handler
second handler
third handler

これですべてです。

于 2012-09-18T09:31:46.043 に答える
0

まず、document.readyに配置します。(それを行ったかどうかはわかりません)1つのアクションに対して2つのアクションが必要な場合は、1つの関数に配置します。

2つの関数を作成して、マウスオーバーで呼び出すこともできます。

$(document).ready(function(){
   domNode.onmouseover = function() {
     this.innerHTML = "The mighty mouse is over me!"
     this.style.backgroundColor = "yellow";
   }
});
于 2012-09-18T09:01:36.537 に答える