我有一个菜单类从收到的 json 文件中加载数据。
在构造函数中我构建了菜单,所以我有一个带有这个(提取部分)js的for循环:
for (var i = 0; i<data.length; i++)
    {
        var btn = $('<div>'+data[i].label+'</div>').appendTo(object.container);
        btn.click(function()
            {  
                if($('.blockingFrame').length == 0)//pas de blocking
                {
                    data[i].action()
                }
            });
    }
现在,显然这不起作用,因为在运行时 data[i] 不再存在...... data[i].action 包含一个有效的 js 函数。
这有效,但不包含条件..:
for (var i = 0; i<data.length; i++)
    {
        var btn = $('<div>'+data[i].label+'</div>').appendTo(object.container);
        btn.click(data[i].action);
    }
所以我想我可以将这个动作存储在 jquery 对象中并像这样调用它,但它不起作用:
for (var i = 0; i<data.length; i++)
    {
        var btn = $('<div>'+data[i].label+'</div>').appendTo(object.container);
        btn.action = data[i].action;
        btn.click(function()
            {  
                if($('.blockingFrame').length == 0)//pas de blocking
                {
                    $(this).action();
                }
            });
    }
我提出的一个部分解决方案是将动作存储在另一个事件中,如 dblclick,并在条件内触发 dblclick,但这看起来很丑陋。
知道怎么做吗?