2013-07-31 37 views
0

我有一个小问题。

$('.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

是您的元素绝对定位? –

+1

.item是相对的,.item-overlay是绝对的...... T.J Crowder的解决方案就像一个魅力。谢谢! –

回答

5

this你传递setTimeout函数内将window,而不是元素(this取决于如何。函数被调用,而不是使用它的。)

可以保存this值的事件处理程序有(或实际上,因为你要jQuery的包装它,只是做与setTimeout功能外var) ,例如:

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

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

0

我认为超出了您的功能。所以,你可以设置var that = this;在setTimeout之前。并用它代替这个。

回调东西