2013-07-20 53 views
0

我有一個IMG(位置:絕對)和一個文本覆蓋它(位置:絕對)的div。 img有一個圖像映射表,問題是當我想要在懸停和離開該區域時更改img-opacity時,當我將div懸停在圖像上時它會調用mouseleave。有沒有簡單而優雅的解決方案來解決這個問題?jQuery的 - 區域鼠標懸停不應該在那裏時,懸停div(內)img(用usemap)

編輯:我想我解決了它與CSS:我給了'指針事件:無'的圖像的股利。

+0

我認爲這是沒有必要的......因爲這是合乎邏輯的圖像的懸停停止時一個div結束它(和「超過」圖像地區)...但我認爲有一些技巧:) –

+0

指針事件css屬性不支持IE – chrisweb

+0

是的,這是一個問題......嗯,我不知道什麼否則可以如此聰明:) –

回答

1

,你可以使用嵌套的條件:

如果(鼠標越過圖像)

{ 如果(鼠標移動到該圖像||如果鼠標在DIV)

{ 

    do the job; 

} 

}

1

你可以複製的代碼,你可能用的圖像,並將其應用到div

可以說在img的mouseenter上設置opcaity爲一個值,然後在div的mouseenter上做同樣的事情,當div的mouseenter改變圖像的opcity時,同樣複製mouseleave的代碼,以便opcaity被重新設置,如果用戶離開或者股利或圖像:

我犯了一個小提琴:http://jsfiddle.net/KpVag/1/

http://jsfiddle.net/KpVag/

$('img').on('mouseenter', function() { 
    $(this).css('opacity', '0.4'); 
}); 

$('img').on('mouseleave', function() { 
    $(this).css('opacity', '1'); 
}); 

$('div').on('mouseenter', function() { 
    $('img').css('opacity', '0.4'); 
}); 

$('div').on('mouseleave', function() { 
    $('img').css('opacity', '1'); 
}); 

[編輯] 看到您的評論我做了一個更新的小提琴後

我現在用sto p停止淡出動畫,所以如果鼠標離開圖像,我們開始動畫,但是如果下一個事件是鼠標在我們的div上,那麼我們取消淡出動畫的圖像,如果鼠標後沒有鼠標在DIV那麼動畫沒有被取消:

$('img').on('mouseenter', function (event) { 
    console.log('wrapper mouseenter'); 
    $(this).stop().fadeOut('slow', function() { 
     // on animation finish 
    }); 
}); 

$('img').on('mouseleave', function (event) { 
    console.log('wrapper mouseleave'); 
    $(this).fadeIn('slow', function() { 
     // on animation finish 
    }); 
}); 

$('div').on('mouseenter', function (event) { 
    console.log('wrapper mouseleave'); 
    // stop the image fadein animation 
    $('img').stop(); 
}); 

[/編輯]

+0

T爲此,但還有下一個問題:當鼠標離開區域時,我想fadeOut()div ...因此,當我將鼠標懸停在div上時,它將達到fadeOut(),並且區域再次被識別,因爲這個... –

+0

我對小提琴進行了更新,這是你的意思嗎? http://jsfiddle.net/KpVag/1/ – chrisweb

+0

但是當你快速徘徊時,這是一個問題。那看起來不對。沒有代碼的 –