1

我一直在浏览这个插件的文档,它看起来很有希望,但最后我无法找到我正在寻找的东西。

http://medialize.github.com/jQuery-contextMenu/docs.html

这是我想要的示例,这是上下文菜单项的示例

 $.contextMenu({
        selector: '.context-menu-one', 
        callback: function(key, options) {
            var m = "clicked: " + key;
            window.console && console.log(m) || alert(m); 
        },
        items: {
            "item1": {name: "Clickable", icon: "edit"},
            "item2": {
                name: "Disabled", 
                icon: "cut", 
                disabled: function(key, opt) { 
                    // this references the trigger element
                    return !this.data('cutDisabled'); 
                }
            }
        }
    });

. 如果我的 div ( context-menu-one) 里面有一些内容,比如<span class="test">x</span>基于此的禁用或启用菜单。

因此,在上述情况下,如果我的 div( context-menu-one) 与test具有 textvalue 的类的spanx禁用菜单项 2

如何做到这一点?不一定是代码,引导我走向良好的方向 = 如果可能的话,好的代码

编辑:

这是jsfiddle示例:

http://jsfiddle.net/XZEUN/2/

因此,因为 firstcontext-menu-one具有与 x 类的跨度,所以 item2 应该被禁用,而不是其他的

4

2 回答 2

1

你需要像这个小提琴一样定义你自己的事件

html

<div class="context-menu-one box menu-1">
    <strong>right click me</strong>
    <span data-item="edit"></span>
</div>​

javascript

events: {
    show: function(opt) {
        var m = opt.$menu;
        $(this).find('span[data-item]').each(function(i, e) { //<-- this search for all span with data-item attribute
            var p = $(e).data('item') + 'Disabled'; //<-- here i compose editDisabled
            if (m.data(p) === true) m.data(p, 1); //<-- this is for mantain previuos disabling
            else m.data(p, true);
        });
        m = null; //<-- this for breaking possible circular references/memory leaks
    },
    hide: function(opt) {
        var m = opt.$menu;
        $(this).find('span[data-item]').each(function(i, e) {
            var p = $(e).data('item') + 'Disabled';
            if (m.data(p) === 1) m.data(p, true); //<-- this reset the previuos disabling
            else m.removeData(p);
        });
        m = null;
    }
}
于 2012-10-12T16:30:58.603 回答
0

如果要禁用绑定到特定选择器的上下文菜单,可以执行以下操作:

$.contextMenu( 'destroy', '.context-menu-one' );

请参见此处的示例:

http://jsfiddle.net/ATyjn/

于 2012-10-12T16:16:13.603 回答