我有一个菜单类从收到的 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,但这看起来很丑陋。
知道怎么做吗?