要素をクリックした後、以下のすべての要素を削除しようとしていp
ます。私がどこで間違っているのか、私に何か指針を教えてもらえますか?
<h2>Heading</h2>
<a href="#">
<p>Click me to delete everything</p>
</a>
$('p').click(function() {
$(this).remove().parent().remove().prev().remove();
});
これがjsfiddleです。
$(this).parent().prev().andSelf().remove();
.addBack()
のエイリアスであり、andSelf
使用することもできます。唯一の違いはaddBack
、jQuery 1.8以降でのみ使用可能であるのに対しandSelf
、バージョン1.2以降で使用可能であるということです。
parent()
prev()
自明です。andSelf()
別名、addBack
一致した要素の前のセットを現在のセットに追加するだけです。つまり.parent().prev()
、前に実行された.parent()
(親要素)と(親の前の要素)を組み合わせて、これらを一度に削除します。
を削除すると<p>
、実際にDOMから削除されます。したがって、親がなくなり、機能し.parent()
なくなります。代わりに、最初にすべての要素を選択してから、たとえばhttp://jsfiddle.net/BcAa9/4/を削除します。
$('p').click(function() {
$(this).parent().prev().addBack().remove();
});
<div>
<h2>Heading</h2>
<a href="#">
<p>Click me to delete everything</p>
</a>
</div>
$('p').click(function() {
$(this).parent().parent().remove();
});
私は提案します(あなたが:の前の兄弟を削除したいと仮定しa
ます
$(this).closest('a').prev().andSelf().remove();
要素をコンテナにラップできる場合は、次のようになります。
<div class="container">
<h2>Heading</h2>
<a href="#">
<p>Click me to delete everything</p>
</a>
</div>
$('p').click(
function() {
$(this).closest('.container').remove();
});
参照:
おそらく、すべてをdivまたはspanタグでラップしてから、jqueryのclosest()関数(http://api.jquery.com/closest/)を使用してその親要素を見つけ、それを削除することをお勧めします。これにより、JavaScriptコードが少しすっきりします。