【发布时间】:2012-01-16 09:43:56
【问题描述】:
我对编写自己的 jquery 函数还是很陌生,我发现调试它非常困难,因为错误消息在输入谷歌时并没有太大帮助。
我有一个用于页面锚点的导航菜单,当单击每个锚点时,屏幕滚动到锚点,元素将根据哪个锚点改变颜色,悬停颜色也会改变。真的很简单,我想。
滚动总是有效,动画偶尔有效,悬停有效通常我必须点击链接两次。 return false 仅适用于您单击的第一个链接。
这使用了 scrollTo 和 animate-colors 插件。
谁能告诉我我做错了什么?
$(".scrolltoanchor").click(function() {
$('a').removeClass('selected');
$(this).addClass('selected');
$.scrollTo($($(this).attr("href")), {
duration: 750
});
switch ($(this).attr("id")) {
case 'personal':
$('.scrolltoanchor').animate({color: '#E4D8B8'});
$(".scrolltoanchor").hover(
function() {
$(this).css('color', 'blue');
},function(){
$(this).css('color', '#E4D8B8');
});
break;
case 'achievements':
$('.scrolltoanchor').animate({color: '#ffffff'});
$(".scrolltoanchor").hover(
function() {
$(this).css('color', 'red');
},function(){
$(this).css('color', '#ffffff');
});
break;
case 'skills':
$('.scrolltoanchor').animate({color: '#dddddd'});
$(".scrolltoanchor").hover(
function() {
$(this).css('color', 'orange');
},function(){
$(this).css('color', '#ffffff');
});
break;
}
return false;
});
很抱歉要求被灌输,但我遵循了我所学的正确语法。有什么我应该知道的事情正在阻止我所期望的工作吗?
编辑:对不起,我忘记了,我在(平均)每秒点击滚动锚链接时收到此错误
未捕获的类型错误:无法读取未定义的属性“0”
我无法发现真正的模式。有时它似乎只发生在以前没有点击过的那些上,有时不会。 谢谢
【问题讨论】:
-
我看起来在您单击其中一个链接之前不会应用悬停,这是正确的吗?如果 return false 没有取消点击事件,那么您的处理程序中有错误(但我找不到它)。
-
我要补充一点:你经常使用
$('.scrolltoanchor')。如果结果永远不会改变(即它总是返回相同的节点),那么您最好将结果存储在一个变量中,这将使您的脚本更快,尽管我怀疑您只会看到几个节点的任何性能问题,只是要记住的事情;) -
是的,我基本上希望在单击链接时更改整个站点的配色方案,更改具有该类的元素的颜色,因此是的,单击链接时悬停颜色会发生变化。感谢您提供有关性能的提示,这将是节点的范围
标签: javascript jquery colors jquery-animate switch-statement