我需要在mouseenter和mouseleave事件之外聲明$featuredImage
以避免代碼複製的正確上下文$(this)
。大家都知道$(this)
以外的mouseenter/mouseleave是一個空的對象。我想將$(this)
綁定到正確的上下文中,只需指定$featuredImage
一次,然後從兩個函數中訪問它,但我似乎找不到這樣做的好方法。
function postThumbOverlay() {
var $featuredImage;
$(document).on({
mouseenter: function(e) {
// duplicated
$featuredImage = $(this).parents('.grid').children('.entry__featured-image');
$featuredImage.find('.entry__featured-image--overlay').addClass('show--overlay');
e.stopPropagation();
},
mouseleave: function() {
// duplicated
$featuredImage = $(this).parents('.grid').children('.entry__featured-image');
$featuredImage.find('.entry__featured-image--overlay').removeClass('show--overlay');
}
}, '.entry-link');
}
我不使用.on('hover')
的原因是因爲這樣做停止的AJAX調用後工作,我需要使用mouseenter
和mouseleave
分開。
你的意思是說,你想避免這種線複製 - (」網格‘)。'$(本)。家長的孩子(’.entry__f eatured-image');'在事件中? – Developer
是的,'$ featuredImage'的雙重任務 - 我只是感覺不到這條線兩次。 – Ivor
在這種情況下,將其提取到一個方法 - 函數getFeaturedImageElement($ this){return $ this.parents('。grid')。children('.entry__featured-image');}'並在事件中調用它 - 'var $ featuredImage = getFeaturedImageElement($(this));' – Developer