gpt4 book ai didi

即使类名不存在,Javascript 事件仍然会触发

转载 作者:行者123 更新时间:2023-12-02 17:14:22 24 4
gpt4 key购买 nike

有人可以向我解释当目标类名不存在时事件将如何触发吗?

代码

 (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 时触发有点过分。

基本上,用户将鼠标悬停在页脚栏上,然后从 Canvas 上弹出联系表单,但是在较小的屏幕/移动设备上,它在页面内容的底部保持静态。

我知道这是基本代码,但是,我已经尝试让它工作好几天了,并且我正在急于编写一些代码来尝试找到解决方案。

我不追求变通办法、媒体查询等......我真的想为了我自己的理智而理解这一点。

最终工作解决方案

  (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 );

最佳答案

在 jquery 中使用事件委托(delegate)。您动态添加类 .dosomething

$('body').on('mouseenter mouseleave', '.dosomething .email-signup__wrap' , function(ev) {

关于即使类名不存在,Javascript 事件仍然会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24569989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com