2012-03-10 6 views
0

У меня есть элементы навигации, которые добавляют класс к ссылке, и удаляет класс из оставшихся ссылок. Как я могу закрепить это легко в одну функцию, которая определяет, какая связь щелкнула и удаляет класс от остальных звеньев (или активной ссылку)Как я могу объединить этот код jquery

Heres код для одной линии - пытаюсь избежать этого для каждой ссылки:

$("#work").click(function() { 
    $(this).addClass('active'); 
    $("#about").removeClass('active'); 
    $("#testimonial").removeClass('active'); 
    $("#instruction").removeClass('active'); 
    $("#blog").removeClass('active'); 
    $("#contact").removeClass('active'); 
}); 

Благодаря

+0

Где HTML код? – gdoron

+1

Дайте им общий класс и используйте его. '$ ('. all_of_em'). click (func ...' Then '$ ('. active'). removeClass ('active'); $ (this) .addCla ...' –

ответ

2

я могу быть недоразумением вопрос, но как насчет:

function mark_active() { 
    $('a').removeClass('active'); 
    $(this).addClass('active'); 
} 
$("#work, #about, #testimonial, #instruction, #blog, #contact").click(mark_active); 
+0

вам следует кэшировать объекты jQuery – pomeh

+0

также следует помнить, что '#work, #about, #testimonial, #instruction, #blog, # contact' не является оптимальным:/ – pomeh

0

Это трудно понять, что вы пытаетесь сделать, но Я думаю, что это может помочь:

var links = $('a'); 
links.click(function() { 
    links.removeClass('active'); 
    $(this).addClass('active'); 
}); 
+0

вы должны кэшировать' $ ("a") 'вызов – pomeh

+0

@pomeh. – gdoron

0

Учитывая все ссылки <a> и внутри одного из родителей позволяет говорить #menu.

var allchild = $("#menu").children("a"); 
allchild.click(function() { 
    allchild.removeClass('active'); //remove the classes from all the menus 
    $(this).addClass('active'); 
}); 

Даже если не

$("#work").click(function() { 
    $("#work, #about, #testimonial, #instruction, #blog, #contact").removeClass('active'); 
    $(this).addClass('active'); 
}); 
+0

вы должны кэшировать свой выбор – pomeh

+0

@pomeh, проверьте мое обновление – Starx

+0

приятно, но в чем разница между '$ (" # menu "). Children (" a ")' и '$ (" a ") '? – pomeh

1

Если я понимаю проблему ...

var allYourLinks = $("someSelector"); 

allYourLinks.click(function() { 
    // remove all active class 
    allYourLinks.removeClass('active'); 
    // add the class to the clicked link 
    $(this).addClass('active'); 
    // even better than .addClass call is: 
    this.className += " active"; 
}); 
1

добавить класс для всех звеньев группы, например, "ACTIVEGROUP".

чем использовать следующую функцию:

var activeGroupClick = function(){ 
    $('.activeGroup').removeClass('active'); 
    $(this).addClass('active'); 
} 

$('.activeGroup').click(activeGroupClick); 
+0

, вы должны кэшировать '$ ('. ActiveGroup')' result – pomeh

+0

true, для исполнения это было бы хорошей идеей! – Sgoettschkes

Смежные вопросы