2015-02-10 2 views
0

у меня есть горизонтальный CSS меню с помощью этого JQuery кода:JQuery установить активную ссылку

function setActiveLink(target) { 
     $(".MenuLink").removeClass("active"); 
     $('a[href=' + target + ']').addClass("active"); 
     //$('.tabcontent').addClass('hide'); 
     $(target).removeClass('hide'); 
    } 

    $(document).ready(function(){ 
    $('.MenuLink').click(function(e) { 
     e.preventDefault(); 
     var target = $(this).attr('href'); 
     document.location.hash = target; 
     setActiveLink(target); 
    }); 
    }); 

я хочу, чтобы установить активный класс на щелкнули ссылку (и удалить все остальные активные классы)

также, Я хочу иметь возможность добавлять активный класс к родительскому элементу при нажатии элемента подменю.

я попытался создать вышеуказанную функцию, но он не добавить класс

я создал скрипку здесь с полным кодом:

http://jsfiddle.net/e79nz1cj/

ответ

1

Удалить класс первый, а затем проверить, если в настоящее время щелкнутый якорь имеет класс MenuLink, если не найдете ближайший MenuLink, который на самом деле не является родителем, но предыдущий элемент ближайшего UL

$(document).ready(function() { 
    $('li a').click(function (e) { 
     e.preventDefault(); 
     document.location.hash = $(this).attr('href'); 
     $(".MenuLink").removeClass("active"); 
     var link = $(this).hasClass('MenuLink') ? $(this) : $(this).closest('ul').prev(); 
     link.addClass('active'); 
    }); 
}); 

FIDDLE

+0

вот что я хотел - не могли бы вы проверить здесь, пожалуйста, - http://pastebin.com/KZzQ9Cbi я добавил предупреждение, не показывая, однако, если я добавить его выше document.ready функции, предупреждение показывает ? – Charles

+0

@Charles - Это означает, что вы не добавляли jQuery, вы должны включить jQuery перед скриптом. – adeneo

+0

ах да - его работа сейчас. хотя кажется, что добавление активного класса к подэлементу, а не к родительскому? – Charles

0

Прежде всего, вам нужно включить jQuery, если вы хотите его использовать. Я правильно понял? Вы хотите что-то вроде this?

function setActiveLink(target) { 
    $(".MenuLink").removeClass("active"); 
    target.addClass("active"); 
    //$('.tabcontent').addClass('hide'); 
    $(target).removeClass('hide'); 
} 

$(document).ready(function(){ 
    $('.MenuLink').click(function(e) { 
     e.preventDefault(); 
     var target = $(this).attr('href'); 
     document.location.hash = target; 
     setActiveLink($(this)); 
    }); 
}); 
Смежные вопросы