Як я можу виключити $ (це) із селектора 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>

Коли натискається одне з цих посилань, я хочу виконувати функцію .hide () на посиланнях, які не натиснуті. Я розумію, що jQuery має: не селектор, але я не можу зрозуміти, як його використовувати в цьому випадку, оскільки необхідно, щоб я вибирав посилання за допомогою$(".content a")

Я хочу зробити щось подібне

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

але я не можу зрозуміти, як правильно використовувати селектор: не в цьому випадку.


3
спробуйте !$(this)спростити код.
Арі

Відповіді:


390

Спробуйте використовувати not() метод замість :not()селектора .

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

Чому я не можу змусити це працювати ... $ ("# власник меню #first_level li"). Не (це) .addClass ("returnToParent");
марк

4
@marck Без контексту, я не знаю. Створіть нове запитання, і я можу допомогти.
Дан Герберт

2
Це дуже погане рішення (ефективне). Немає справжньої причини $(".content a")всередині clickзворотного дзвінка ...
НА ВСЯКОМУ


9

Ви також можете використовувати .siblings()метод jQuery :

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/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.