编辑:
似乎错误的项目正在注册mouseenter。所以我猜这个问题已经解决了。
在以下代码中
$(".nav").mouseenter(function(){
$('.'+$(this).attr("id")).stop().animate({"opacity": 1}, 800);
});
$(this)
正在返回[object Object]
而不是鼠标输入的项目
编辑:
将confirm($(this));
添加为.mouseenter函数内的最后一行并将鼠标悬停在其中一个区域后,对话框显示[object Object]
。具有id的东西是找到具有等于被鼠标对象的id的类的元素。我在控制台中自己测试了一些代码,它运行得很好。
在使用$(this)运行console.log后,似乎$(this)实际上是在输出,但是$(this).attr(“id”)仍然没有返回ID。
这是受影响的HTML:
<div id="body">
<span class="nav current" id="1">Home</span>
<span class="nav" id="2">Music</span>
<span class="nav" id="3">More</span>
</div>
<span class="nav background 1">Home</span>
<span class="nav background 2">Music</span>
<span class="nav background 3">More</span>
答案 0 :(得分:2)
$(this)实际上是触发函数调用的对象。
正确的代码:
$(".nav").mouseenter(function(){
$(this).stop().animate({"opacity": 1}, 800);
});
答案 1 :(得分:0)
看到你的事件处理程序依赖于具有ID的元素,我会使初始选择器更加健壮。此外,没有必要将this
包装在jQuery对象中,所以我也删除它...
// only find .nav elements that also have an "id" attribute
$('.nav[id]').on('mouseenter', function(e) {
// here, `this` is the .nav element that has received a `mouseenter` event
var selector = '.' + this.id;
$(selector).stop().animate({ opacity: 1 }, 800);
});