質問: 質問 == ``` aiueo aiueo aiueo aiueo ``` みたいに同一クラス名が複数存在していた時に、それをjQueryで指定しremoveする関数を書きました。 ``` $(function(){ $('.a').click(function(){ $(this).remove(); }); }); ``` 自分の予想では$('.a')で[a]というクラス名の要素が全部jquery要素化して配列で選択?されていると思っていたので、クリックをすると[a]というクラス名の書かれているp要素全てが消えると思っていました。 しかし、消えたのはクリックされたp要素である一要素のみでした。 私の考えの「$('.a')で[a]というクラス名の要素が全部jquery要素化して配列で選択?されている」が間違っていると思うのですがどこがおかしいでしょうか? 初めて使用するのでおかしな文章や、ルール違反があったらすみません。 よろしくお願いします。
回答: > > 「$('.a')で[a]というクラス名の要素が全部jquery要素化して配列で選択?されている」が間違っている > > > その通りです。 `$('.a')`は単なる要素選択で、`.click`を付けることでその要素に対してのイベントを追加しています。 なので件のコードでは**すべての$('.a')要素にclickイベントが追加されている**状態となります。 その上で`$(this).remove();`とした場合、`this`が示すのは当然**自分自身のみ**なので、消されるのも**自分自身**です。 やりたい状況がいまいち想像できませんが、とある要素のクリック時に同じ属性(今回で言えばclass=aのもの)をすべて消し去りたいなら、こうでしょうかね。 ``` $(function(){ $('.a').click(function(){ $('.a').remove(); }); }); ```