クリックをライブ機能にバインドするにはどうすればよいですか?
私は試した:
$('.expansion_button').die('click', function(){
$('.expansion_button').live('click', expansion);
});
しかし、これは、ajaxクエリの後にクリックを2回バインドします。
どうすれば修正できますか?
(私の英語は下手です)
一致した要素ごとにライブハンドラーを1回だけ実行する場合は、次のようにします。
$('.expansion_button').live('click', function(e){
if( $.data( this, "liveclicked" ) ) {
return true;
}
$.data( this, "liveclicked", true );
return expansion.apply( this, arguments );
});
私が正しく理解したら、これを試してください
$('.expansion_button').one('click', function(){
alert('Next click will not alert!');
});
上記のコードの動作デモは次のとおりです
Jquery .die() は、その要素にアタッチしたハンドラーを強制終了します。それをバインドするには、ライブを使用するだけです。
$('.expansion_button').live('click', expansion);
次に、バインドされたイベントを削除する場合は、その関数のどこかで .die() を呼び出します。次のようになります。
$("unbind-element").click(function () {
$(expansion_button).die();
});