2014-10-11 2 views
1

Я создал небольшую вкладку на веб-сайте. При щелчке jQuery захватывает данные-слайды и использует эту информацию для поиска соответствующего идентификатора и применения класса.Несколько селекторов, использующих эту переменную

<div class="service-link" data-slide="#post-123">Click Me</div> 

'target' не получает активный класс, применяемый к нему, когда я использую 'this' и target в той же строке.

$(this, target).addClass("active"); 

Это работает, если я использую две линии. Кто-нибудь знает, почему я не могу использовать одну строку?

$(this).addClass("active"); 
$(target).addClass("active"); 

Полный Рабочий скрипт -

$(".service-link").click(function(){ 
    var target = $(this).data("slide"); 
    $(".service-type-slide, .service-link").removeClass("active"); 
    $(target).addClass("active"); 
    $(this).addClass("active"); 
})` 

ответ

1

Вы можете использовать метод add() для достижения этой цели:

$(this).add(target).addClass("active"); 

Example Here


Вы пытаетесь :

$(this, target).addClass("active"); 

, которая в основном эквивалентно использованию:

$(target).find(this).addClass("active"); 

Вот почему он не работает.

Вы можете увидеть пример, демонстрирующий это here.

+1

Это работает! Благодаря! Клянусь, я попробовал это. – user2504370

0

Я думаю, что:

$(this, target) 

попытается найти элемент узла (который это сослаться) в целевом контексте. но он его не найдет, потому что цель не содержит этого элемента