1

コンソールはoverExpand最後に true として検出されません。私は何か間違ったことをしていますか?

var transLayer = $('.transparentBg');
var overExpand = false;
var overUl = false;


$(transLayer).hide();
console.log('transLayer hide'); // this is being logged

$('#header .nav .wrapper > ul > li.expand').hover(function(){ 
    overExpand = true;  
    console.log(overExpand);// this works = true    
}, function(){ 
    overUl = true;
});

console.log(overExpand); // this shows false
4

2 に答える 2

3

値を設定するコードがtrue実行されないため、値は false です。

overExpand = trueホバーイベントハンドラーの中にあります。そのコードは、イベントが発生するまで実行されません。console.log(overExpand)イベントが発生する前に確実に実行されるため、overExpand は false のままです。

に設定された後に値を確認したい場合はtrue、ハンドラー内からログを記録する必要があります。

$('header .nav .wrapper > ul > li.expand').hover(function(){
    overExpand = true;
    console.log(overExpand);
}, function(){
    overUl = true;
});

現在書かれている方法が正しいと本当に期待している場合は、コードをかなり再構築する必要があります。

于 2012-08-08T01:32:25.257 に答える
1

console.log()内部にホバー機能を追加します。

$('#header .nav .wrapper > ul > li.expand').hover(function(){ 
    overExpand = true;    
    console.log(overExpand);   
}, function(){ 
    overUl = true;
});

これにより、要素にカーソルを合わせるたびにコンソールに新しいログが作成されます。これは関数が実行されるときです。前のコードではconsole.log()、ホバー関数がトリガーされる前に への呼び出しが発生します。

于 2012-08-08T01:32:51.140 に答える