2010-11-18 5 views
3

、私はそのように見ている多くのHTMLコントロールがあります。jQuery一番上のコンテナIDを取得するには?私のページの

<span id="pic1" class="container"> 
    <span class="inner"> 
     <span class="img"></span> 
     <span class="strip"></span> 
     <span class="remove_the_main_container"></span> 
    </span> 
</span> 

を私はしたいすべては、ユーザーがclass="remove_the_main_container"spanでクリックしたときにclass="container"に(jQueryのを使用して)spanを削除することです。問題は - クリックしたスパン(class="remove_the_main_container")が配置されている最上部のコンテナのIDを取得する方法は?

答えて

2

jQuery's .closest() methodを使用すると、指定したセレクタに一致する最初の祖先にアクセスできます。

$('.remove_the_main_container').click(function() { 
    $(this).closest('.container').remove(); 
}); 

containerクラスと他の祖先がある場合は、この方法では、彼らが影響を受けません。

spanではなく内容を削除したい場合は、.inner要素に移動し、jQuery's unwrap() methodを使用してください。

$('.remove_the_main_container').click(function() { 
    $(this).closest('.inner').unwrap(); 
}); 
+0

awesome、maqny thanks! :) – Tony

+2

1.3でclosest()が導入されたことには注目に値する。何らかの理由でDrupalをインストールしたような理由で1.2.xで動かない場合は、.parents( 'some_selector')。eq(0)は等価です。 – mpdonadio

+0

私は4つのスパンを持っているとしましょう:[1] [2] [3] [4]。私が2番目を削除すると、3番目と4番目のスパンの左にスライドしてアニメーションしたいと思います。どうやってするか ? – Tony

2

最上位のコンテナは常にcontainerのクラスを持っている場合は、IDを取得するには、このような何かを行うことができます:

var id = $(".remove_the_main_container").parents(".container").attr("id"); 

しかし、あなたはは、コンテナを削除するにIDを必要としません。

$(".remove_the_main_container").bind("click", function(eventObj) { 
    $(this).parents(".container").remove(); 
}); 
2

このコードは、remove_the_main_containerのどのインスタンスに相対的であるので、それは何のIDやその自然の何かを必要としません:あなたはこのような何かを行うことができます。

jQuery('.remove_the_main_container').bind('click', function (e) { 
     jQuery(e.currentTarget).parents('.container').remove(); 
}); 
5

IDを削除する必要はありません。

$('.remove_the_main_container').click(function() { 
    $(this).parents('.container').remove(); 
}); 
関連する問題