我想为大型设备制作鼠标悬停事件,对于移动设备或任何其他小型设备,我想将其设为点击事件(因为鼠标悬停不适用于移动设备或iPad等)。我有这个jQuery代码,但它似乎无法正常工作。这有什么问题?
if ($(window).width() < 991) {
$('.open_products').on('click', function () {
$('#sidebar').addClass('active');
$('.overlay').fadeIn();
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
});
$('.open_cart').on('click', function () {
$('#sidebarcart').addClass('active');
$('.overlay2').fadeIn();
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
});
} else {
$('.open_products').on('mouseover', function () {
$('#sidebar').addClass('active');
$('.overlay').fadeIn();
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
});
$('.open_cart').on('mouseover', function () {
$('#sidebarcart').addClass('active');
$('.overlay2').fadeIn();
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
});
}
答案 0 :(得分:0)
jQuery(document).ready(function(){ MyEvents();window.onresize=MyEvents; }); function MyEvents(){ if(window.matchMedia("(max-width:991px)").matches){ $('.open_products').on('click', function () { $(this).find('#sidebar').toggleClass('active'); $(this).find('.overlay').fadeToggle(); $(this).find('.collapse').toggleClass('in'); $(this).find('a[aria-expanded=true]').attr('aria-expanded', 'false'); $(this).find('a[aria-expanded=false]').attr('aria-expanded', 'true'); }); $('.open_cart').on('click', function () { $(this).find('#sidebarcart').toggleClass('active'); $(this).find('.overlay2').fadeToggle(); $(this).find('.collapse').toggleClass('in'); $(this).find('a[aria-expanded=true]').attr('aria-expanded', 'false'); $(this).find('a[aria-expanded=false]').attr('aria-expanded', 'true'); }); } else { $('.open_products').on('mouseover', function () { $(this).find('#sidebar').addClass('active'); $(this).find('.overlay').fadeIn(); $(this).find('.collapse').addClass('in'); $(this).find('a[aria-expanded=true]').attr('aria-expanded', 'false'); }); $('.open_cart').on('mouseover', function () { $(this).find('#sidebarcart').addClass('active'); $(this).find('.overlay2').fadeIn(); $(this).find('.collapse').addClass('in'); $(this).find('a[aria-expanded=true]').attr('aria-expanded', 'false'); }); $('.open_products').on('mouseout', function () { $(this).find('#sidebar').addClass('active'); $(this).find('.overlay').fadeOut(); $(this).find('.collapse').removeClass('in'); $(this).find('a[aria-expanded=false]').attr('aria-expanded', 'true'); }); $('.open_cart').on('mouseout', function () { $(this).find('#sidebarcart').removeClass('active'); $(this).find('.overlay2').fadeOut(); $(this).find('.collapse').removeClass('in'); $(this).find('a[aria-expanded=false]').attr('aria-expanded', 'true'); }); } }
答案 1 :(得分:-1)
我能想到的原因是: 您发布的代码段是否可能在呈现按钮('.open_cart','。。openn_products')之前执行?
并且,让我给你一个提示:尽量避免重复的代码。你可以在这样的函数中外包两个事件监听器:
if ($(window).width() < 991) {
addProductAndCartEvtListeners();
} else {
addProductAndCartEvtListeners();
}
function addProductAndCartEvtListeners() {
$('.open_products').on('click', function () {
$('#sidebar').addClass('active');
$('.overlay').fadeIn();
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
});
$('.open_cart').on('click', function () {
$('#sidebarcart').addClass('active');
$('.overlay2').fadeIn();
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
});
}
关于你的问题:如果我的第一个猜测不是解决方案,请提供更多信息,以便我能够提供帮助:)
亲切的问候,
大卫