我想制作一个类似菜单的东西,由几个盒子组成,它们会浮到一边并显示它们下面的链接,而用户则将鼠标移到它们上面。这是一个小提琴:FIDDLE
你能告诉我阻止他们移动的原因吗?
$(document).ready(function () {
$("#kwadrat1").mouseenter(function () {
$(this).animate({
left: '-=100px'
}, slow);
$("#link1").css("display", "visible");
});
$("#kwadrat2").mouseenter(function () {
$(this).animate({
top: '-=100px'
}, slow);
$("#link2").css("display", "visible");
});
$("#kwadrat3").mouseenter(function () {
$(this).animate({
bottom: '-=100px'
}, slow);
$("#link4").css("display", "visible");
});
$("#kwadrat4").mouseenter(function () {
$(this).animate({
right: '-=100px'
}, slow);
$("#link4").css("display", "visible");
});
});
答案 0 :(得分:2)
如果遇到此类问题,您必须检查浏览器开发工具控制台。
在这种情况下,你得到:
Uncaught ReferenceError: slow is not defined
因此,您必须使用slow
而不是"slow"
。
$(this).animate({
top: '-=100px'
}, "slow");
// ^-- As string instead of variable
答案 1 :(得分:0)
您正在做的另一个错误是显示没有可见的属性,您应该使用其他类似block
的内容。所以:
$("#linkX").css("display", "visible");
会变成:
$("#linkX").css("display", "block");
根据IonicăBizău suggesstion:
$("#linkX").css("display", "block");
可以成为:
$("#linkX").show();
修复动画:
$(document).ready(function () {
$("#kwadrat1").mouseenter(function () {
$(this).animate({
left: '-=100'
}, "slow");
$("#link1").show();
});
$("#kwadrat2").mouseenter(function () {
$(this).animate({
top: '-=100'
}, "slow");
$("#link2").show();
});
$("#kwadrat3").mouseenter(function () {
$(this).animate({
top: '+=100'
}, "slow");
$("#link3").show();
});
$("#kwadrat4").mouseenter(function () {
$(this).animate({
left: '+=100'
}, "slow");
$("#link4").show();
});
});
我所做的更改:
.css("display")
转换为.show()
right
和bottom
属性,因为没有任何此类属性left
和top
与变量符号left: +=
一起用于移动正确,反之亦然,top: +=
用于移动底部,反之亦然。slow
更改为"slow"