2011-08-14 6 views
1

jqueryの.delegateをバインドまたはアンバインドする方法を教えてください。 シンプルなクリックでこのjsを使っているとします。jQueryのバインディングとバインドを解除するデリゲート

function spanclick(){ 
    $(this).html('<input class="mm" value="' + $(this).text() + '"/>'); 
    $(this).unbind("click"); 
} 
$("span.la").click(spanclick); 
$("span.la").unbind("click"); 

今、私は単純なクリックの代わりに代理人に切り替える必要があります。
もちろん、ページの読み込み時に作成されていないセレクタにも使用したいので、 jqueryの中 どうか、私はbindunbinddelegate's:または私は.live()
質問を使用する必要がありますか?

答えて

4

span.la親要素(推奨)またはdocumentまたはbody使用し、デリゲートを使用するには:undelegateするに

$(document).delegate('span.la', 'click', spanclick); 

を:

$(document).undelegate('span.la', 'click'); 
+1

あなたが」 '.dに行くelegate() 'を' document'に追加すると、 '.live()'を使うこともできます。 –

+0

@Matt Ball:明確にするコメントを追加しました。私は同意する、 '文書'は良い候補者ではない。 – Mrchief

+0

'.delegate()'は、無駄な初期DOM選択をしないので、やや効率的です。また、イベントの委任について考えている可能性があり、何が起こっているのかを理解している可能性が高いため、IMOの方がやや優れています。 – user113716

関連する問題