2011-07-11 18 views
0

可能性の重複:
Trigger an event with Prototypeトリガする方法イベント(onclickの)/プロトタイプ

たとえば、ジャバスクリプト/プロトタイプでの3つのonclickイベント。ダンプのための警告機能を起動するようにプロトタイプを強制する方法 "first!"、 "second!"そして "第三!"値。ありがとう、ここではあなたができるコードです:

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
//<![CDATA[ 
document.observe("dom:loaded", function() { 
    $("go").observe("click", function() { alert('First!'); }); 
    $("go").observe("click", function() { alert('Third!'); }); 
    $("go").observe("click", function() { alert('Second!'); }); 
    }); 
//]]> 
</script> 
<form> 
<input id="go" type="button" value="Click me!" /> 
</form> 
</body> 
</html> 
+1

一般的な考えですか? –

+0

IEの注文には関係ありません...私は何かできることはありますか?ありがとう – Gamba

+0

確かにIE9以前は注文を維持していないようです.. –

答えて

0

イベントハンドラはJavaScriptの関数であり、関数はJavaScriptのプライム市民です。通常、中間オブジェクトには、すべてのハンドラのリストが配列として格納されます。たとえば、jQueryでは、data('events')にイベントハンドラが保持されます。プロトタイプが単純でない限り、すべてのハンドラを手動でフェッチして順序付けして戻す必要があります。

それとも

@gabyが言ったように、あなたはあなたの中に正しい順序を使用してそれらをバインドすることができ、最初の場所でマークアップ。

+0

IE版以前にチェックしていますが、バインドされた注文は維持されていません。 –

0

はどのようにこの件について:

var handlers = [func1, func2, func3]; 
$("go").observe("click", function() { 
    var i = 0, len = handlers.length; 
    for(i; i<len;i++) 
     handlers[i](); 
}); 

もちろんの改善がありますが、それは正しい順序でそれらをバインドする

+0

お返事ありがとうございます。それは良い答えですが、かなり...私はMagentoと一緒に働いています。そこに私はボタンを "提出"し、Magentoは$( "go")のようなものを持っています。 Magentoの前にトリガーする別の「クリック」機能を作成したいのですが、デフォルトの動作にアクセスするのは適切ではないので、私はonclickトリガーを前にしておき、他の「クリック」を実行できます...ありがとう! – Gamba

関連する問題