我是堆叠溢出和从头开始使用jQuery的新手,所以请原谅我任何不正确的格式(或者只是完全省略代码)以及明显粗暴的编码习惯。
我正在编制一个投资组合:
Question answered, link removed
如果您尝试单击导航中的链接,则会有fadeOut> fadeIn效果解析。在Portal和About之间,这些链接非常有效,但是如果单击Journal,Resources或Contact,则文本会在导航离开时失败并且无法fadeOut。
我可以替换单个div的innerHTML,但我更喜欢使用这种格式来交换内容。任何人都可以告诉我为什么它与前两个链接一起使用但是当我对它们进行相同的编码时,其他三个链接会中断吗?
答案 0 :(得分:2)
我不确定这是否会解决您的问题,但我注意到您的所有条件检查都使用单个等号而不是双倍(甚至更好,三倍!)等于。
尝试更改您的所有条件:
else if (about=true)
到此:
else if (about===true)
编辑:在查看javascript一段时间之后,我注意到你有很多不必要的冗余代码。我已经在jsfiddle上编写了一个小程序,希望能帮助你减少代码量。
$('a').on('click', function () {
var clickedDiv = this;
var visibleDiv = $('div:visible');
var divToShow = $('div').eq(parseInt(clickedDiv.innerHTML)-1);
if (visibleDiv[0] === divToShow[0]) {
return;
}
visibleDiv.fadeOut(500, function () {
divToShow.fadeIn(500);
});
});
答案 1 :(得分:2)
你应该使用双等于==
进行if语句的比较。
答案 2 :(得分:1)
您将赋值运算符(=)与比较运算符混淆(==或===进行类型化比较)。
由于您的条件是从布尔变量读取,您可以执行以下操作:
if(condition){
}
此外,您的脚本标记缺少类型属性。
此外,您应该将这些事件绑定调用包含在函数中,并将该函数附加到onReady(jQuery(document).ready)事件。
全局变量也是邪恶的(至少应该避免)。查看代码,您似乎计划使用这些全局标志来启用或禁用某些菜单项?为什么不首先控制这些菜单项的渲染,这样你就不需要全局变量了。
答案 3 :(得分:0)
最简单,最干净的方法是给所有菜单项一类让我们说"菜单"
然后使用此
$(".menu").click(function () {
$(".menu").fadeOut().delay(500);
$(this).fadeIn();
}