Modernizr.mq不能在Safari中工作;多个事件触发器
Modernizr.mq not working in Safari & multiple event triggers?
我有一个基于浏览器宽度的3种不同风格和功能的子导航。看现场直播
$(function() {
$(window).resize(function() {
if(Modernizr.mq('(min-width:641px) and (max-width: 1200px)')) {
$(".subnav-menu").click(function() {
$('.primary-subnav').slideToggle();
$('.subnav-close').show();
});
$(".subnav-close").click(function() {
$('.primary-subnav').slideToggle();
$('.subnav-close').hide();
});
$(".tablet-subnav li").click(function() {
$('.primary-subnav').slideToggle();
$('.subnav-close').hide();
});
}
else if(Modernizr.mq('(max-width: 640px)')) {
$(".subnav").click(function() {
$('.primary-subnav').slideToggle();
$('.subnav-mobile-open').toggle();
$('.subnav-mobile-close').toggle();
});
}
}).trigger('resize');
});
点击时应该显示的菜单在我的台式机或手机上的Safari上根本没有显示,我在其他几台mac上测试了一下,什么也没有。它在Chrome/Firefox中工作得很好,除了有时它会多次触发菜单的slideToggle。我做错了什么?
编辑::菜单似乎没有扩展在移动safari或移动chrome在所有,而我认为这纯粹是一个safari问题。手机上的小箭头和平板电脑上的菜单按钮确实会改变,如果我点击菜单应该在的地方,它的反应就像去了链接,但菜单是不可见的……真的奇怪。
尝试在从一个媒体查询中添加的单击事件处理程序上使用.off( "click", "**" )
,并将其替换为当前媒体查询所需的.on( "click" )
事件处理程序。
此外,你可以创建一个很好的淡出效果,而没有多队列动画的常见问题,通过添加.stop( true, true )
到链。
没有你的html,我无法真正测试它,但这里是它应该是什么样子的:
$( window ).on( "resize", function ()
{
if( Modernizr.mq( "(min-width:641px) and (max-width: 1200px)" ))
{
$( ".subnav" ).off( "click", "**" );
$( ".subnav-menu" ).on( "click", function ()
{
$( ".primary-subnav" )
.stop( true, true)
.slideToggle();
$( ".subnav-close" )
.stop( true, true )
.show();
});
$( ".subnav-close, .tablet-subnav li" ).on(" click", function ()
{
$( ".primary-subnav" )
.stop( true, true )
.slideToggle();
$( ".subnav-close" )
.stop( true, true )
.hide();
});
}
else if ( Modernizr.mq( "(max-width: 640px)" ))
{
$( ".subnav-menu, .subnav-close, .tablet-subnav li" ).off( "click", "**" );
$( ".subnav" ).on( "click", function ()
{
$( ".primary-subnav" )
.stop( true, true )
.slideToggle();
$( ".subnav-mobile-open, .subnav-mobile-close" )
.stop(true, true)
.toggle();
});
}
})
.resize();
相关文章:
- 每次只在第一个上单击事件触发器
- 2个Analytics帐户中的Google Analytics事件触发器跟踪
- jQuery 可排序事件触发器
- 使用 Hammer.js 的程序化事件触发器
- Javascript/AngularJS:如何使点击事件触发器成为父级
- jQuery特定的事件触发器
- Unity 3d事件触发器将gameobject.active设置为false
- 上的jquery inputmask事件触发器未完成
- 如何在PlayN中添加对自定义JavaScript事件触发器的支持
- dom对象创建javascript和jquery后的事件触发器
- google将v3事件触发器映射到json创建的标记上
- 通过事件触发器/按钮单击将参数传递给 javascript 函数
- 自定义打印功能,打印内容未显示在第一个事件触发器上
- 如何使用带有复选框的事件触发器访问 ID 数组
- 如何使用事件触发器和自定义属性获取元素的子元素
- 如何在使用循环时调用 jquery 事件触发器
- IE 中浮点和内联块元素的 focusin 事件触发器
- 页面中的 Angularjs-Accordion 事件触发器
- JS切换事件触发器无法正常工作
- 使用事件触发器如何在输入更改时将值传递给函数