在菜单中添加一个类,然后使用jquery单击链接?

我正在尝试使用jquery在我的css菜单中添加一个类,它添加了当您单击菜单项时选择的类但它实际上没有单击超链接。

编辑:它添加了一个li类。 但是当我点击它时,它什么也没做

HTML:

  

jQuery的:

  $(function () { $('.topmenu a:link').click(function (e) { e.preventDefault(); var $this = $(this); $this.closest('ul').children('li').removeClass('selected'); $this.parent().addClass('selected'); }); });  

我需要它点击链接一旦它分配了“选择”类,奇怪,因为手动点击似乎不起作用?

CSS:

 #nav { width: 100%; height: 30px; } nav a.current { display: block; margin: auto; width: 950px; } nav ul { list-style: none outside none; margin: 8px 0 0; } nav li { float: left; height: 45px; left: -45px; position: relative; top: -16px; z-index: 2000; } nav li a { color: #FFFFFF; text-decoration: none; } nav a:link, nav a:visited, nav a:active { display: block; float: left; font-size: 14pt; font-weight: normal; height: 33px; padding: 11px 17px 0; } nav li:hover, .home-link a, .current_page_item a:link, .current_page_item a:visited, a.children_openend, .topmenu li.selected a { background: url("images/dc/menu-selected.png") repeat-x scroll 0 0 transparent !important; color: #FFFFFF; } nav a:hover { color: #FFFFFF; } 

您可以使用手动触发单击

 .trigger("click"); 

所以你做完之后

 addClass("selected"); 

只需在结尾标记一个trigger()调用:

 addClass("selected").trigger("click"); 

编辑:

您可以手动重定向浏览器,而不是这样做:

 addClass("selected"); window.location.href = $this.attr("href"); 

.trigger()不起作用,因为你在li上触发它,而不是a。 我很抱歉。

再次编辑:

如果我理解你正确,你希望在点击链接并加载新页面后,li仍然拥有该类。 你可以用CSS做到这一点。 如果您为每个列表项提供与页面相关的类,例如:

  

在每个页面上,为body标签添加一个id:

  

然后,您可以使用以下方法对当前选定的li进行样式设置:

 #home-page .home-link {} 

这有帮助吗?

嗯。 如果您想要“点击”链接,则必须删除以下行:

 e.preventDefault(); 

但是,链接将转到其href设置的页面,我不知道你是否想要它。

希望这可以帮助。 干杯

您的代码正在按照您的要求执行操作: e.preventDefault(); 在事件处理程序内部阻止该事件的默认行为。

这是因为你正在使用e.preventDefault(); ,它禁用了的默认行为。

另外,请注意jQuery当前不支持:link选择器。 因此,您的选择器仅适用于某些浏览器。

你可能想要使用它:

 $('.topmenu a[href]').click(function (e) { 

编辑:

当然,在链接之后将导致加载新页面,并且对先前创建的DOM的任何更改都将丢失。

如果您只是尝试设置当前页面的链接样式,请尝试尝试:

 var page = window.location.pathname.split('/').pop(); $('a[href$="' + page + '"]').parent().addClass('selected'); 

当页面加载时,它将获取window.locationpathname中的最后一项,并将其连接到选择器中以选择该页面的元素。