$(this)子元素css改变根本不起作用

我有一个小问题。

$('.item').mouseenter(function() { setTimeout(function() { $(this).find('.item-overlay').css('z-index', '-1'); }, 300); }).mouseleave(function() { $(this).find('.item-overlay').css('z-index', ''); }); 
...

一切都很好,除了一件小事。 z-index没有变化。 你能帮助我吗? 我也试过“下一步”,“孩子”,“找到” – 没有工作:(

在你传递的函数中, setTimeout将是window ,而不是元素。 ( this取决于函数的调用方式,而不是函数的使用方式。)

你可以保存事件处理程序得到的this值(或者实际上,当你要使用jQuery包装它时,只需使用setTimeout函数之外的var ),例如:

 $('.item').mouseenter(function() { var $this = $(this); setTimeout(function() { $this.find('.item-overlay').css('z-index', '-1'); }, 300); // ... 

你需要绝对定位“.item-overlay”

我认为不符合你的职责。 所以,你可以设置var that = this; 在setTimeout之前。 并使用它而不是这个。

回调的东西