与小部件和菜单中的两个jQuery事件冲突

时间:2016-01-20 00:45:30

标签: javascript jquery wordpress

我在WordPress中工作,并在移动网站上使用视口媒体查询控制元素。在768宽的两个移动菜单中查看网站时,请更换桌面。为实现这一目标,我在左上角使用小部件下拉两个自定义菜单。

左侧小部件下拉列表是嵌入的Shortcodes Unlimited短代码。

右侧的主菜单只是使用http://www.codrops.com的jquery.dlmenu.js v1.0.1的基本菜单。

访问该页面时,您可以单击左下拉窗口小部件,它按预期工作。您也可以单击右侧下拉菜单,它按预期工作。但是,一旦单击右下角菜单,就无法单击左下拉窗口小部件。

mobile / jquery.dlmenu.js首先注册。

shortcodes-ultimate / assets / js / other-shortcodes.js注册第二。

jQuery(function($) {
        $( "#dl-menu" ).dlmenu({
                animationClasses : { 
                   classin : "dl-animate-in-2", classout : "dl-animate-out-2" }
                        });
                    });

脚本全部加载到页脚中。

没有控制台错误。

http://iemajen.com/lexingtonhabitatforhumanity/

1 个答案:

答案 0 :(得分:2)

我认为jquery.dlmenu.js文件(themes/bonesv2/mobile/jquery.dlmenu.js);

中存在问题
// clicking somewhere else makes the menu close
$body.off( 'click' ).on( 'click.dlmenu', function() {
    self._closeMenu() ;
} );

您的插件Shortcodes Unlimited将点击侦听器绑定到body标记,在这种情况下,该标记会将点击事件监听到.su-spoiler-title。但是当您单击dlmenu时,在jquery.dlmenu.js中,它会取消绑定来自body的所有点击事件并绑定它自己的事件。

因此,要确保这是问题所在,请尝试删除此.off('click')命令:

// clicking somewhere else makes the menu close
$body.on( 'click.dlmenu', function() {
    self._closeMenu() ;
} );

如果此处出现问题,您可以尝试仅取消绑定'click.dlmenu'事件:

// clicking somewhere else makes the menu close
$body.off( 'click.dlmenu' ).on( 'click.dlmenu', function() {
    self._closeMenu() ;
} );

P.S。您必须在Inspector中检查是否可以正确解除绑定。