私のコード: http://codepen.io/anon/pen/ABrDe
「li」の「a」要素をクリックすると、「アクティブな」クラスと右側の矢印が表示されます(JS部分に書いた「スパン」を使用)。「アクティブ」部分は問題ありませんが、矢印部分と混同しています。「a」ではなく「li」を選択する必要があると思います。しかし、私は「アクティブ」クラスだけを「a」に与えます。「アクティブなクラスを持つ「a」の親である「li」を選択するにはどうすればよいですか?
私のコード: http://codepen.io/anon/pen/ABrDe
「li」の「a」要素をクリックすると、「アクティブな」クラスと右側の矢印が表示されます(JS部分に書いた「スパン」を使用)。「アクティブ」部分は問題ありませんが、矢印部分と混同しています。「a」ではなく「li」を選択する必要があると思います。しかし、私は「アクティブ」クラスだけを「a」に与えます。「アクティブなクラスを持つ「a」の親である「li」を選択するにはどうすればよいですか?
jQuery セレクター:
$("a").parent("li").hasClass("active");
これを参照してください:フィドル
$("#resp-list a").click(function () {
$(this).parent().siblings().find('a').removeClass("active");
$(this).addClass("active");
$(this).parent().add('<span class="fr arrow-right"></span>');
});
メソッドを使用しparent
ます。
$("#resp-list a").click(function () {
var _this=$(this);
var parentItem=_this.parent();
//do whatever you want with the parent.
});
append
また、メソッドを使用してスパンをliに追加する必要がある場合もあります。
次の方法で親オブジェクトを取得します。
var parent = $(this).parent();
したがって、あなたの場合、親 jQuery オブジェクトは次の DOM で保持されます。
<li>
<a href="#">Test ...</a>
</li>
また、スコープ内で 1 回だけオブジェクトを jQuery でラップすることを常にお勧めします。したがって、セレクターを複数回使用する場合は、変数に保存してください。
var $this = $(this);
var $parent = $this.parent();
フィドルを編集して、期待どおりに動作するようにしました。
$("#resp-list > li").on('click', 'a', function () {
$("#resp-list > li > a").removeClass('active');
$(this).addClass("active");
$(this).parent().prepend('<span class="fr arrow-right"></span>');
});
check out this...
$(document).ready(function(){ $("#resp-list a").click(function () {
$("#resp-list a").removeClass("active");
$(this).addClass("active");
if($(this).hasClass("active")){
$("#resp-list a span").remove();
$(this).append('<span class="fr arrow-right"></span>');
}
});
});
Hope this is what u expect.