首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以编程方式更新jquery.mmenu.js选项?

如何以编程方式更新jquery.mmenu.js选项?
EN

Stack Overflow用户
提问于 2013-07-24 19:33:17
回答 2查看 707关注 0票数 1

我正在测试mmenu.js (http://mmenu.frebsite.nl)作为移动站点抽屉菜单的选项,它工作得很好,但我面临的一个问题是在创建菜单之后尝试更新选项值。具体来说,我希望在默认情况下将"dragOpen“选项设置为"true”,但希望在具有水平滚动的元素上触发触摸事件时禁用它。

我有另一个插件处理幻灯片样式元素的水平触摸滑动,因此我试图利用hammer.js ( mmenu.js已经为dragOpen事件使用了它),并将"dragOpen“更改为"false”,当触摸的目标是幻灯片容器时:

代码语言:javascript
运行
复制
$(function() {
    var navMenuLeft = $('nav#menu-left').mmenu({
        position: 'left',
        searchfield: true,
        dragOpen: true,
        threshold: 150
    });

    $('.swiper-container').hammer().on('touch', function(event){
        // this triggers properly, but I seem unable to access the options for
        // the mmenu object. If I log "navMenuLeft" it returns the #menu-left
        // element rather than the mmenu object, so "navMenuLeft.opts" is undefined
        console.log('touched swiper');
    });
});

我试着将阈值提高到一个比滑动幻灯片所需的值更大的数字,但是幻灯片上的一个极小的滑动仍然会触发dragOpen。我已经非常彻底地搜索了文档,并且觉得我只是遗漏了一些简单的东西。或者不是改变dragOpen选项,而是有一种方法来设置元素以排除拖放以打开菜单?

我认为dragOpen对用户体验并不重要,最后只能完全禁用它,但我希望找到一个解决方案,因为在其他情况下,也需要以编程方式更新不同的选项。

谢谢你的帮助!

EN

Stack Overflow用户

发布于 2014-07-09 07:28:19

有点晚了,但如果还有人像我一样在寻找答案,

代码语言:javascript
运行
复制
var options = {dragLockToAxis: true};
                var hammertime = new Hammer($("#Draging_element"), options);
                hammertime.on("dragleft dragright drag swipeleft swiperight touchstart",        function(ev) {
   ev.stopPropagation();
});

您正在查看的主要部分是包含所有事件的hammertime.on()。所有这些事件的原因是jquery.mmenu使用多个事件在功能上触发拖动,您需要对所有事件调用stopPropagation。

就像一种魅力:-)享受吧

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17843263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档