首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全黑客矩阵-菜单不显示在覆盖中

安全黑客矩阵-菜单不显示在覆盖中
EN

Stack Overflow用户
提问于 2013-02-14 09:18:09
回答 1查看 120关注 0票数 1

我有一个对公众不可见的网站,我在几个地方使用了safecracker和矩阵字段。在正常加载的页面上,一切正常。但是当矩阵字段出现在覆盖图中(使用colorbox)时,不会创建矩阵菜单div。

使用FireBug逐步执行代码时,问题似乎是下面这行:

代码语言:javascript
复制
var $body = $(document.body);

没有正确设置$body (也许这是覆盖加载的竞争条件?)。因此,当它到达matrix.js中的这段代码时:

代码语言:javascript
复制
obj.menu.$ul = $('<ul id="matrix-menu" />').appendTo($body).css({
    opacity: 0,
    display: 'none'
});

$body不能解析,所以菜单不能附加到任何地方。我想我已经把它修好了,但是我想检查一下,看看我是否应该担心我会弄坏其他东西。如果我将上面的代码更改为:

代码语言:javascript
复制
obj.menu.$ul = $('<ul id="matrix-menu" />').appendTo($(document.body)).css({
    opacity: 0,
    display: 'none'
});

一切看起来都很好。有没有更好的方法来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2013-05-14 00:55:28

如果Matrix字段在第一次初始化时没有高度,它会搁置大多数初始化内容,假设它要么默认隐藏,要么位于辅助发布选项卡上。这减少了初始页面加载时间,还修复了某些单元格类型(文本、资产,可能还有其他)的一些问题。需要知道其单元格中的DOM元素的维度。

当Matrix被展开或其选项卡被单击时,Matrix将自动恢复其初始化,但如果您在发布页面之外使用Matrix并将其隐藏,则需要触发该初始化-自行恢复:

代码语言:javascript
复制
for (var i = 0; i < Matrix.instances; i++)
{
    Matrix.instances[i].initRowsIfVisible();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14866297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档