簡単なコードを次に示します。
HTML:
<div id="close">Click me</div>
JS コード:
$("#close").click(function(){
alert("1");
$(this).attr('id','expand');
});
$("#expand").live('click', function(){
alert("2");
$(this).attr('id','close');
});
問題: 「閉じる」をクリックすると、自動的に live() も呼び出されます。jsfiddle でこれを参照してください: http://jsfiddle.net/uFJkg/
同じ要素の id を「close」から「expand」に変更しているためですか? この問題を解決するにはどうすればよいですか?
私が試してみました:
$("#expand").die().live('click', function()
しかし、うまくいきませんでした。event.stopPropagation() を試しましたが、それも役に立ちませんでした。ID「expand」の別のdivを作成してdocument.readyで非表示にしようとしましたが、何らかの理由でそれも機能していません。
次に、 live() がjQuery 1.7+で非推奨になったことを読んでから試しました:
$("#expand").on('click', function(){
それも機能していません。
何かご意見は?新鮮な目は、私が欠けているものを見つけることができると思います.
ありがとう。