0

短く正確に言うと:

リンクがあり、クリックすると新しいdivがリストに挿入されます。各divには、このdivを削除するためのリンクが含まれています。

したがって、作業中は次のようになります。

<div id="list">
   <div id="item"><a href="#" id="remove_item">Remove</a></div>
   <div id="item"><a href="#" id="remove_item">Remove</a></div>
</div>

クリックハンドラーに関しては私が持っています

$("#remove_item").live 'click', (e) ->
    $(this).parent().remove()
    $(this).die()  # Unbind

さて、ここでの私の問題は、このハンドラーの奇妙な振る舞いにあります。最後に挿入されたDIVのリンクをクリックすると、適切に削除されますが、最初のDIVをクリックすると、削除される以外に、その後に立っているすべてのDIVも削除されます。。したがって、最初のものをクリックすると、基本的にすべてが削除されます。

そして、明らかに、現在のものだけを削除する必要があります!:)

そして、私には手がかりがありません、なぜバインド解除が機能しないのですか?複数発砲に関係があるのか​​どうかはわかりません。:(

誰かがこれを手伝ってくれますか?

4

3 に答える 3

1

これはコメントですが、まだ十分なポイントではありません。

まず、 .live()は非推奨であるため、 .on().offの使用を検討してください。

私はあなたの問題を再現することはできません、あなたのコードはここで私のために働きます、あなたが言うように、おそらく複数のバインドとバインド解除に何か問題があります。たぶん、もう少しコードが役立つでしょう。

さらに、同じIDを使用しないでください。IDは要素ごとに一意である必要がありclass="remove_item"、divごとにaと一意のIDを持っている方がよいでしょう。

于 2012-11-23T14:36:07.803 に答える
1

DOM要素のIDは一意である必要があります。

ほとんどの場合、これを変更する必要があります。

<div id="list">
   <div id="item"><a href="#" id="remove_item">Remove</a></div>
   <div id="item"><a href="#" id="remove_item">Remove</a></div>
</div>

これに:

<div id="list">
   <div class="item"><a href="#" class="remove_item">Remove</a></div>
   <div class="item"><a href="#" class="remove_item">Remove</a></div>
</div>

関連するCoffeeScriptを次のように変更しました。

$(".remove_item").live 'click', (e) ->
    $(this).parent().remove()

$(this).die()また、他のDIVを削除可能にしたいので、電話をかける必要はないと確信しています。

于 2012-11-23T17:25:26.430 に答える
0

わかった。問題が何であったかはわかりませんが、HTMLレイアウトの一部を再配置した後、問題は解決しました。そして、私はまだその理由を完全には理解していません。ああ、なんでも。助けてくれた皆さん、ありがとう!:)

于 2012-11-26T07:49:16.247 に答える