$(this)をjQueryセレクターから除外するにはどうすればよいですか?


203

私はこのようなものを持っています:

<div class="content">
    <a href="#">A</a>
</div>
<div class="content">
    <a href="#">B</a>
</div>
<div class="content">
    <a href="#">C</a>
</div>

これらのリンクの1つがクリックされたときに、クリックされていないリンクに対して.hide()関数を実行したい。私はjQueryに:notセレクターがあることを理解していますが、この場合、リンクを選択する必要があるため、この方法を使用する方法を理解できません$(".content a")

私は何かしたいです

$(".content a").click(function()
{
    $(".content a:not(this)").hide("slow");
});

この場合、:notセレクターを適切に使用する方法がわかりません。


3
!$(this)より単純なコードを試してください。
2015年

回答:


390

セレクタの代わりにnot() メソッドを使用してみてください。:not()

$(".content a").click(function() {
    $(".content a").not(this).hide("slow");
});

これが機能しないのはなぜですか... $( "#menu-holder #first_level li")。not(this).addClass( "returnToParent");
マルク2012

4
@marckコンテキストがなければ、わかりません。新しい質問を作成してください。お手伝いできるかもしれません。
ダンハーバート

2
これは非常に悪いソリューションです(パフォーマンスに関して)。コールバックの$(".content a")中に本当の理由はありませんclick...クリックする
たびに


9

jQuery .siblings()メソッドを使用することもできます。

HTML

<div class="content">
  <a href="#">A</a>
  <a href="#">B</a>
  <a href="#">C</a>
</div>

JavaScript

$(".content").on('click', 'a', function(e) {
  e.preventDefault();
  $(this).siblings().hide('slow');
});

作業デモ:http : //jsfiddle.net/wTm5f/


5

"siblings()"メソッドを使用し、その効果を適用するためだけに ".content a"セレクターを繰り返し実行しないようにする必要があります。

HTML

<div class="content">
    <a href="#">A</a>
</div>
<div class="content">
    <a href="#">B</a>
</div>
<div class="content">
    <a href="#">C</a>
</div>

CSS

.content {
    background-color:red;
    margin:10px;
}
.content.other {
    background-color:yellow;
}

JavaScript

$(".content a").click(function() {
  var current = $(this).parent();
  current.removeClass('other')
    .siblings()
    .addClass('other');
});

こちらをご覧ください:http : //jsfiddle.net/3bzLV/1/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.