2012-05-05 13 views
0

私は、次のコードを持っており、上の()メソッドの使用にライブ()メソッドを使用してから変更したい:それはコメントについてですjQueryの - ライブからの変更()(上へ)

$('.commenttext').live('keydown', function(e) { 
    if ((e.which == 13) && !e.shiftKey) { 
     comment($(this)); 
     return false; 
    } 
}); 

をポストにも - on()メソッドを使ってオンザフライで作成されたものも含まれます。

$('.commenttext').on('keydown', function(e) { 
    if ((e.which == 13) && !e.shiftKey) { 
     comment($(this)); 
     return false; 
    } 
}); 

のように、単に「生きている」という単語だけを変更すると、オンザフライで作成されなかったアイテムでのみ機能します。

UPDATE 1

私は、次のようにコードを変更:commentsDivはcommenttextの親要素であると

$('.commentsDiv').on('keydown', '.commenttext', function(e) { 
    if ((e.which == 13) && !e.shiftKey) { 
     comment($(this)); 
     return false; 
    } 
}); 

を、まだそれはその場で作成された要素では動作しません。たとえば、次の関数はcommentsDivをオンザフライで作成します。

$('#postDiv').on('keydown', '#posttext', function(e) { 
    if (e.which==13 && !e.shiftKey) { 
     post($(this)); 
     return false; 
    } 
}); 

正しく調整する方法を知っている人はいますか?

感謝:)

+0

あなたは '.commenttext' *静的*手段の**静的**親にコールバックを添付する必要がありますが、ページのロードに存在します。 – gdoron

+0

@ gdoron、私はその文について変更する唯一の事は、イベントバインディング時に親が存在すると言うことです。 'live'(ドキュメントデリゲート)バインディングの利点は、ページのロードが完了する前に、*ページが読み込まれ終わった後、さらにdocument.readyの前でさえもできることです。 – zzzzBov

答えて

2

.commenttextの静的親にコールバックを添付する必要があります。静的手段は、ページの読み込みに存在します。

例:

$('body').on('keydown', '.commenttext', function(e) { 
    if ((e.which == 13) && !e.shiftKey) { 
     comment($(this)); 
     return false; 
    } 
}); 

または:

$('{staticParentElement}').on('keydown', '.commenttext', function(e) { 
    if ((e.which == 13) && !e.shiftKey) { 
     comment($(this)); 
     return false; 
    } 
}); 
+0

すごい!まさに私が必要としたもの。ありがとうございました! – weltschmerz

1

あなたはイベントホルダーとして最も近い静的親要素を使用することができます。しかし、あなたはまた、bodyを使用することができます。.commenttextの親要素のための

$('body').on('keydown', '.commenttext', function(e) { 
    if ((e.which == 13) && !e.shiftKey) { 
     comment($(this)); 
     return false; 
    } 
}); 
+0

@VisioNありがとうございました:)質問をご覧ください。新しい情報の編集 – weltschmerz

+0

@gdoron not quite:P – weltschmerz

+0

@Dennis静的な親要素で試しましたか? 'body'で動作するかどうかを確認してください。 – VisioN

1
$('parentElement').on('keydown', '.commenttext', function(e) { 
    if ((e.which == 13) && !e.shiftKey) { 
     comment($(this)); 
     return false; 
    } 
}); 

代替 "parentElement"。

+0

ありがとうございました:)質問をご覧ください。新しい情報の編集 – weltschmerz

2

live形態は、実際にdocumentを使用してデリゲートであるので、新たなフォーマットは次のようになります

$(document).on('keydown', '.commenttext', function...); 

典型的には(この場合.commenttextに)セレクタの近い一致親を使用する方が良いではないこと内容に応じて変更されますが、ほとんどの場合、documentが有効です。

+0

ありがとうございました:)質問を参照してください。新しい情報の編集 – weltschmerz

関連する問題