我有一个小问题。
$('.item').mouseenter(function() {
setTimeout(function() {
$(this).find('.item-overlay').css('z-index', '-1');
}, 300);
}).mouseleave(function() {
$(this).find('.item-overlay').css('z-index', '');
});
<div class="item">
<div class="item-overlay">
</div>
<iframe>...</iframe>
</div>
一切都很好,除了一件小事。 z-index没有变化。你能帮助我吗? 我也试过“下一步”,“孩子”,“找到” - 没有用过:(
答案 0 :(得分:5)
this
setTimeout
将是window
,而不是元素。 (this
取决于函数的调用方式,而不是函数的使用位置。)
您可以保存事件处理程序获得的this
值(实际上,当您要jQuery包装它时,只需使用var
函数外的setTimeout
执行此操作),例如:
$('.item').mouseenter(function() {
var $this = $(this);
setTimeout(function() {
$this.find('.item-overlay').css('z-index', '-1');
}, 300);
// ...
答案 1 :(得分:0)
你需要绝对定位“.item-overlay”
答案 2 :(得分:0)
我认为这个超出了你的职能范围。所以,你可以设置var that = this;在setTimeout之前。并使用它而不是这个。
回调内容