这里有一个动态页面http://www.intelligen.info/index.html,当从左侧的nav中选择锚点时,它将替换内容。类“current”应该添加到选定的锚上并保持在其上,但是它不能工作。选定的锚在选定时应该有一条线穿过它。我怎么才能把这事做好?
以下是代码:
$(function() {
var newHash = "",
$mainContent = $("#main-content"),
$pageWrap = $("#page-wrap"),
baseHeight = 0,
$el;
$pageWrap.height($pageWrap.height());
baseHeight = $pageWrap.height() - $mainContent.height();
$("nav").delegate("a", "click", function() {
window.location.hash = $(this).attr("href");
return false;
});
$(window).bind('hashchange', function(){
newHash = window.location.hash.substring(1);
if (newHash) {
$mainContent
.find("#guts")
.fadeOut(200, function() {
$mainContent.hide().load(newHash + " #guts", function() {
$mainContent.fadeIn(200, function() {
$pageWrap.animate({
height: baseHeight + $mainContent.height() + "px"
});
});
$("nav a").removeClass("current");
$("nav a[href="+newHash+"]").addClass("current");
});
});
};
});
$(window).trigger('hashchange');
});发布于 2014-01-30 14:20:55
应该引用属性选择器的值,因此将其更改为:
$("nav a[href='"+newHash+"']").addClass("current");在那之后它应该能起作用。您可以使用 pseudo selector实现相同的视觉效果,这可能更方便。
发布于 2014-01-30 14:21:24
newHash的值包含一个.,因为它是page.html。.是jQuery选择器中的一个特殊字符,因此有两个选项。转义它,或者用引号包装属性等于选择器的值。后者是两者中比较容易的。更改这一行:
$("nav a[href="+newHash+"]").addClass("current");至:
$('nav a[href="'+newHash+'"]').addClass("current");发布于 2014-01-30 14:27:03
您想要更改href或将类添加到"selected“(我猜是单击的)元素中?
$('nav a').click(function() {
$('nav a').removeClass('current');
$(this).addClass('current');
}这必须在hashchange之外,否则单击就触发hashchange。
https://stackoverflow.com/questions/21458918
复制相似问题