2016-08-22 21 views
1

jqueryドロップダウンメニューに遅延を追加しようとしています。私は正しく働くために遅れを得ました。しかし、それはすべてのドロップダウンメニューに遅延を追加しています。ここで私が使用しているコードは次のとおりです。ドロップダウンメニューにホバー遅延を追加する

var timer; 
var delay = 1000; 
$('.header__nav-main-list > li', '#header').hover(function() { 
    timer = setTimeout(function(){ 
     $('.header__nav-main-list > li', '#header').children(".header__nav-sub-list").show(); 
     $('.header__nav-main-list > li', '#header').addClass("is-open"); 
    }, delay); 
}, function() { 
    clearTimeout(timer); 
    $(".header__nav-sub-list").hide(); 
    $('.header__nav-main-list > li').removeClass("is-open"); 
}); 

代わりに、私はそれをしたい、私は「そう、私は以下のようなものを試してみましたが、その代わりに、それは何を決定することができない上にマウスを移動していNAVアイテムに遅延を追加しますこれは "を指しています。

var timer; 
var delay = 1000; 
$('.header__nav-main-list > li', '#header').hover(function() { 
    timer = setTimeout(function(){ 
     $(this).children(".header__nav-sub-list").show(); 
     $(this).addClass("is-open"); 
    }, delay); 
}, function() { 
    clearTimeout(timer); 
    $(".header__nav-sub-list").hide(); 
    $('.header__nav-main-list > li').removeClass("is-open"); 
}); 

答えて

4

確かにあなたは$(this)を使用することはできませんが、それはそのように動作するはずです:

var timer; 
var delay = 1000; 
$('.header__nav-main-list > li', '#header').hover(function(event) { 
    var $this = $(this); 
    timer = setTimeout(function(){ 
     $this.children(".header__nav-sub-list").show(); 
     $this.addClass("is-open"); 
    }, delay); 
}, function() { 
    clearTimeout(timer); 
    $(".header__nav-sub-list").hide(0); 
    $('.header__nav-main-list > li').removeClass("is-open"); 
}); 
+0

感謝を!私は実際にこれに似たものを試しましたが、間違って書いていました私は代わりに$($ this).children(...)を書いていました。 –

+0

あなたは大歓迎です。あなたが最初に '$ this'を宣言して割り当てていれば、あなたのコードがうまくいったかもしれません。 'var $ this = this'(あるいは' var $ this = $(this) ') – yezzz

関連する問題