2013-07-31 53 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之前。並用它代替這個。

回調東西