2012-03-05 6 views
0

ボタンとして使用されるいくつかの画像を動的に挿入して、onClickイベントを追加します。は動的にonclickハンドラを置き換えます

$("img.image_edit_customer").live("click", function() { 
    // when clicking the edit image of a row 
    $(this).manipulateCustomer("editRowCustomer", { 
     scope : "#customer_tbody" 
    }); 
}); 

後でボタンとして使用されている画像からonClickイベントを削除します。今

$('img[class^="image_edit"]').live('click', function() { 
    // do nothing from now on 
    alert('edit'); 
}); 

、それは常に古い新しいハンドラを実行します。

UPDATE

私はdie('click');を使用している場合は、私はまだ一度onclickイベントを実行することができます。あなたは、イベントハンドラ削除する.die()メソッドを使用する必要があるイベントバインドする.live()を使用しているので

答えて

1

一度だけ実行されるイベントを添付すると、その後、自身を削除します。添付し

を削除する

$(document).off("click", "img.image_edit_customer", editRow); 

機能:イベントを削除するには

$(document).on("click", "img.image_edit_customer", editRow); 

$(document).one("click", "img.image_edit_customer", function() { 
    $(this).manipulateCustomer("editRowCustomer", { 
     scope : "#customer_tbody" 
    }); 
}); 

は後で削除することができ、イベントをアタッチするには

function editRow(e) { 
    $(e.target).manipulateCustomer("editRowCustomer", { 
     scope : "#customer_tbody" 
    }); 
} 
+0

それは動的に挿入された画像のためにも機能しますか? –

+0

はい、ハンドラをアタッチできるすべての要素は、このメソッドで動作する必要があります。それは泡立つ「クリック」イベントのためにドキュメントレベルで聴きます。したがって、対象となる要素のセレクタが正しい限り、それはうまくいきますが、もちろん、「ドキュメント」よりも親の親を使用するようにしてください。可能であれば、ダイナミックにインスティチューティングされません。 – adeneo

0

$('img[class^="image_edit"]').die('click'); 

お知らせのjQuery 1.7のよう

を、使用することをお勧めします代わりに.on().off()メソッドを使用して、イベントハンドラをアタッチまたはアタッチすることができます。

2

あなたはライブの方法でイベントを装着しているので、あなたはダイ法

http://api.jquery.com/die/

+1

+1、 'live'と' die'の両方が廃止予定です思った。 – fardjad

+0

これはいいですか? –

0

ではなくバインド解除または(別名死ぬ)殺害を使用するために必要なすべてのマッチした要素のイベント、私がマークしたいですそのような「マーカー」クラスと個々の要素:jQueryの1.7以上の場合

$("img.image_edit_customer").live("click", function() { 
    if(!$(this).hasClass('clicked')) { 
     $(this).addClass('clicked'); 
     $(this).manipulateCustomer("editRowCustomer", { 
      scope : "#customer_tbody" 
     }); 
    } 
}); 
関連する問題