我有一个对公众不可见的网站,我在几个地方使用了safecracker和矩阵字段。在正常加载的页面上,一切正常。但是当矩阵字段出现在覆盖图中(使用colorbox)时,不会创建矩阵菜单div。
使用FireBug逐步执行代码时,问题似乎是下面这行:
var $body = $(document.body);没有正确设置$body (也许这是覆盖加载的竞争条件?)。因此,当它到达matrix.js中的这段代码时:
obj.menu.$ul = $('<ul id="matrix-menu" />').appendTo($body).css({
opacity: 0,
display: 'none'
});$body不能解析,所以菜单不能附加到任何地方。我想我已经把它修好了,但是我想检查一下,看看我是否应该担心我会弄坏其他东西。如果我将上面的代码更改为:
obj.menu.$ul = $('<ul id="matrix-menu" />').appendTo($(document.body)).css({
opacity: 0,
display: 'none'
});一切看起来都很好。有没有更好的方法来解决这个问题?
发布于 2013-05-14 00:55:28
如果Matrix字段在第一次初始化时没有高度,它会搁置大多数初始化内容,假设它要么默认隐藏,要么位于辅助发布选项卡上。这减少了初始页面加载时间,还修复了某些单元格类型(文本、资产,可能还有其他)的一些问题。需要知道其单元格中的DOM元素的维度。
当Matrix被展开或其选项卡被单击时,Matrix将自动恢复其初始化,但如果您在发布页面之外使用Matrix并将其隐藏,则需要触发该初始化-自行恢复:
for (var i = 0; i < Matrix.instances; i++)
{
Matrix.instances[i].initRowsIfVisible();
}https://stackoverflow.com/questions/14866297
复制相似问题