Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Переменная в селекте (https://javascript.ru/forum/jquery/42332-peremennaya-v-selekte.html)

sergsam1 22.10.2013 14:40

Переменная в селекте
 
Задача такая, есть блок ссылок типа:
<a href="#" data-text="text1" class="btmnuel">link1</a>
<a href="#" data-text="text2" class="btmnuel">link2</a>


Нужно добавить класс к ссылке на которую кликнули, пробовал так:
$('.btmnuel').click(function() {	
	$("a[data-text=$(this).attr('data-text')]").addClass('act');
});


не работает. Подскажите как правильно?

ОлегА 22.10.2013 14:44

$('.btmnuel').click(function() {   
    $(this).addClass('act');
});

sergsam1 22.10.2013 14:55

Цитата:

Сообщение от ОлегА (Сообщение 277622)
$('.btmnuel').click(function() {   
    $(this).addClass('act');
});

Так то работает только выделяются все ссылки на которые нажимаешь и выделение не исчезает. Как бы сделать чтобы выделенной могла быть только последняя нажатая ссылка а у остальных все отменялось?
Выделенная имею ввиду с добавленным классом act.

Сделал так:
$('.btmnuel').click(function() {   
    $('.btmnuel').removeClass('act');
    $(this).addClass('act');
});

рони 22.10.2013 15:19

Цитата:

Сообщение от sergsam1
у остальных всеХ отменялось

затем
Цитата:

Сообщение от sergsam1
Нужно добавить класс к ссылке на которую кликнули


рони 23.10.2013 02:51

Цитата:

Сообщение от Poznakomlus
Так лучше будет

угу но без
Цитата:

Сообщение от Poznakomlus
not($(this)).

живой пример тута )))

рони 23.10.2013 04:06

Цитата:

Сообщение от Poznakomlus
логически,

Цитата:

Сообщение от Poznakomlus
var alls = $('.btmnuel');

закешировали каждый раз неискать
Цитата:

Сообщение от Poznakomlus
alls.not($(this)).

перебор всех кешированных ??? зачема -- нашли все кешированные минус один -- снова перебираем удаляем класс.
какой смысл среди 10 найти 9 которые потом снова перебирать -- не легче перебрать все 10 один раз удаляя класс без всяких лишних поисков неизвестно зачем?

рони 23.10.2013 04:11

Poznakomlus, если хочется экономить то можно так
<script>
  (function ($) {
   var alls = $('.btmnuel'), a;
   alls.click(function () {
     a && a.removeClass('active');
     a = $(this);
     a.addClass('active');
   });
})(jQuery);
</script>


Часовой пояс GMT +3, время: 10:31.