如何编辑jQuery.mmenu.js以允许类(不仅是ID)被定位?

时间:2013-08-19 23:28:24

标签: jquery mmenu

我正在移动网站上工作,我想在Twitter的移动网站上显示隐藏的子菜单(刷一下推文以显示其他选项)。我非常喜欢jQuery.mmenu.js插件中的接口,但它仅限于目标ID,我需要定位类。

我确信这是由Fred设置的,这在理论上可以改变。

这些代码都可以在这里下载:http://mmenu.frebsite.nl/

PS。这篇文章主要是根据他的联系要求给弗雷德,但如果有人能想到解决方案,我很乐意尝试。

2 个答案:

答案 0 :(得分:0)

你可以把它包起来:

$('.classSelector').each(function(){
   $('#'+this.id).mmenu();
});

... ofc,该类的每个对象都需要有一个id ...

如果你不想在html中给它们ID,请执行以下操作:

var menuCtr = 0;

$('.classSelector').each(function(){
   if(this.id == ''){
     this.id = 'my_mmenu_'+ menuCtr++;
   }
   $('#'+this.id).mmenu();
});

答案 1 :(得分:-1)

这也应该有效:

$('.classSelector').mmenu();

唯一真正的问题是该插件将拖动事件绑定到“页面”。因此,通过在页面上拖动来打开菜单仅限于每个方向一个菜单(“左”,“右”,“顶”,“底”)。

我想更改插件会相对容易,因此它可以将拖动事件绑定到指定的元素(通过配置)并回退到“页面”。在官方插件中实现之前,请尝试这样:

for ( var a = 0; a < 10; a++ )
{
    $(".menu" + a).mmenu({
        dragOpen :{
            open: true,
            pageNode: $(".tweet" + a)
        }
    });
}

打开未公开的jquery.mmenu.js文件,转到$ .fn.mmenu.dragOpen方法(第454行)并添加:

var $dragNode = ( opts.pageNode && opts.pageNode instanceof $ ) ? opts.pageNode : $page;

转到第530行并更改:

$page.hammer()

$dragNode.hammer()

我认为应该这样做。