有人可以向我解释当一个类别的目标名称不存在时,事件会如何发生..
CODE
(function ($) {
var config = {};
$(document).ready(function () {
var wi = $(window).width();
if ( wi > 768 ) {
$('body').addClass('dosomething');
} else {
$('body').removeClass('dosomething');
}
$(window).resize(function() {
var wi = $(window).width();
console.log(wi);
if ( wi > 768 ) {
$('body').addClass('dosomething');
} else {
$('body').removeClass('dosomething');
}
var $container = $('.email-signup__wrap'),
$cHeight = $('.email-signup').outerHeight();
// $('.dosomething .email-signup__wrap').on('mouseenter mouseleave', function(ev) {
$('body').on('mouseenter mouseleave', '.dosomething .email-signup__wrap' , function(ev) {
var $this = $(this);
if ( ev.type === 'mouseenter' ) {
TweenMax.to($container, .4, {
ease: Power2.easeOut,
css:{
overflow: 'visible',
position: 'absolute',
top: -$cHeight
}
});
}
else
{
TweenMax.to($container, .4, {
ease: Power2.easeOut,
css:{
position: 'relative',
top: 0
},
onComplete: hide
});
function hide(){
$container.css('overflow', 'hidden');
}
$("div.mce_inline_error").remove();
}
});
});
});
})( jQuery );
我已经有点过分了,将dosomething类添加到每个选择器中,以防止事件在768px以下的屏幕尺寸上触发。
基本上,用户将鼠标悬停在页脚栏上,并从画布上弹出一个联系表单,但在较小的屏幕/移动设备上,它在页面内容的基础上保持静态。
我知道这是一个基本的代码,但是,我一直试图让这个工作好几天,而且我正在努力寻找解决方案。
我不是在工作,媒体查询等之后......我真的想要了解这一点,这是为了我自己的理智。
最终工作解决方案
(function ($) {
var config = {};
$(document).ready(function () {
$(window).on("resize", function () {
resizeWindow();
}).trigger("resize");
var $container = $('.email-signup__wrap'),
$cHeight = $('.email-signup').outerHeight();
$(document).on({
mouseenter: function() {
TweenMax.to($container, .4, {
ease: Power2.easeOut,
css:{
overflow: 'visible',
position: 'absolute',
top: -$cHeight
}
});
},
mouseleave: function() {
TweenMax.to($container, .4, {
ease: Power2.easeOut,
css:{
position: 'relative',
top: 0
},
onComplete: hide
});
function hide(){
$container.css('overflow', 'hidden');
}
$("div.mce_inline_error").remove();
}
}, ".dosomething .email-signup__wrap");
});
function resizeWindow() {
config.wWidth = $(window).width();
if ( config.wWidth > 768 ) {
$('body').addClass('dosomething');
} else {
$('body').removeClass('dosomething');
}
}
})( jQuery );
答案 0 :(得分:2)
在jquery中使用event delegation
。您动态添加类.dosomething
$('body').on('mouseenter mouseleave', '.dosomething .email-signup__wrap' , function(ev) {