好的,我决定发布答案,因为我想解决您的代码的某些部分。
首先return false;
,你可以使用 jQueryevent.preventDefault();
函数,而不是最后做 a。最终结果基本相同,但是这样做我们可以使用 jQuery 告诉锚点在一开始就什么也不做,然后再运行任何其他代码。
我更新的 Javascript 代码:
$('.source-title-box a').click(function(event) {
// Stop the default anchor behaviour
event.preventDefault();
// Lets check if the clicked link is already active
// And if it is active, don't let them click it!
if($(this).closest('div').hasClass('active')) {
return false;
}
// Now lets remove any active classes that exist
$('.active').toggleClass('active');
// And apply an active class to the clicked buttons
// parent div
$(this).closest('div').toggleClass('active');
var region = $(this).attr('data-region');
$('.textzone:visible').fadeOut(500, function () {
$('#' + region).fadeIn(500);
});
});
我添加的 CSS:
.active {
background-color:#467FD9;
color:#fff;
}
.active a {
cursor:default; /* Don't show the hand cursor */
color:#fff;
}
一个工作示例:
http://jsfiddle.net/dmvcQ/3/
我不确定当前的 HTML 标记是否有其他用途,但当前的样式和功能可以通过 a 来实现,<a href="#" data-region="source-region">Our region</a>
您不需要将它们包装在 a<div>
和 a<span>
中。
例如这里是相同的代码,只有锚标签:http: //jsfiddle.net/dmvcQ/7/
如果您对答案有任何疑问,请告诉我。