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 没有改变。你们能帮我解决这个问题吗?我也试过“next”、“child”、“find”——没有一个成功:(

4

3 回答 3

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);
    // ...
于 2013-07-31T07:32:35.437 回答
0

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

于 2013-07-31T07:34:45.100 回答
0

我认为超出了您的职责范围。所以,你可以设置 var that = this; 在设置超时之前。并用它代替这个。

回调的东西

于 2013-07-31T07:36:32.457 回答