2011-07-07 7 views
3

メソッドを持つjQueryに使用されています。それでは、私はこのようなHTMLを持っているとしましょう:jQueryのでPrototypeJSの

<div id="covers"> 
    <a href="#"><img ... /></a> 
    <a href="#"><img ... /></a> 
    <a href="#"><img ... /></a> 
    <a href="#"><img ... /></a> 
    <a href="#"><img ... /></a> 
    <a href="#"><img ... /></a> 
    ...lots anchors here... 
</div> 

を、私は親のdivにイベントをバインドし、そのようdelegate()を使用して、新しい、動的に追加アンカーに個別のハンドラをアタッチすることはできません。

$('#covers').delegate('a', 'click', function(){ 
    /// stuff I want to do 
    var clickedAnchor = $(this); 
}); 

同等のコードはPrototypeには何かありますか?

答えて

2

プロトタイプの考え方は、クロスブラウザの抽象化(1年に1回のリリース、汚染されたネイティブプロトタイプの追加)を追加するだけで、純粋なJavaScriptのようになります。

したがって、プロトタイプには delegateはありません。 でもEvent#findElementを使用できます。

$('covers').observe('click', function (event) { 
    var link = event.findElement('a'); 

    if (link) { 
     // ... 
    } 
}); 

編集:ありプロトタイプでdelegateです:http://api.prototypejs.org/dom/Event/on/

$('covers').on('click', 'a', function (event, element) { 
    // ... 
}); 
+0

だから、それは次のようになり次のようになります。 '$( '#カバー')(、機能(EVT){ \t VAR clickedAnchor = event.findElement( 'A') 'クリック' を観察; \t。 (\t ///私がしたいもの) \t} }); ' – artlung

+1

はい、 '#'のみ削除してください。 – katspaugh

+0

ああ、私は '$$ 'を使っていなかったのを忘れてしまった。 'on'ハンドラはそれと同じように見えます。 – artlung

関連する問題