0

次のようなボタンがあるとします。

<input name="myButton" type="button" value="button" onclick="return test();" >

ここで、テスト機能は次のとおりです。

function test(){
  // do something
  return true; // based on some logic return boolean
}

たとえば、onclickイベントに何が設定されているかわからない場合、実行時に関数またはonclickに設定されているコードを読み取って実行する必要があります。次に例を示します。

var btn = getElementById('myButton');
var btnOnClickFunc = btn.onclick;
if (btnOnClickFunc) {
    // do something
}

私はこれがうまくいかないことを知っています、そしてそれは実際に私の質問です。この例のボタンのonclickイベントを実行時に読み取るにはどうすればよいですか?

この場合の例は、後でjQueryを使用してonclickがボタンにアタッチされる場合です。

4

1 に答える 1

4

これを行う必要がある場合は、これを行う必要がなくなるように、最終的にコードをリファクタリングすることをお勧めします。それまでの間、次のハックを使用できます。

$('#myButton').attr('onclick')();

この属性'onclick'は実際には関数を返すため、で呼び出すと()実際にその関数が実行されます。

jQuery を使用したくない場合は、その必要はありません。以下はそれなしで動作します:

document.getElementById('myButton').onclick();

また、これら 2 つのいずれについても、次の 2 つの行に分割できます。

var clickFunc = $('#myButton').attr('onclick');
...
clickFunc();
于 2010-01-13T00:15:40.240 に答える