3

我有一个Cerabox 灯箱设置并且工作正常。但我希望看到它在页面加载时执行,而无需访问者点击链接。任何人有功夫 mootools 技能可以提供帮助?

这是代码:

window.addEvent('domready', function(){
//modal
$$('a.video').cerabox({
width: 560,
height: 345,
displayOverlay: false
});

<a href="http://www.youtube.com/embed/h8WiyX21A1c?rel=0&amp;autoplay=1" class="video youtube"><img src="http://thumbnail.jpg" alt="video thumbnail"><div class="btn-play"><p>&gt;</p></div></a>

提前致谢!

4

1 回答 1

1

不是最好的 api 插件,当它可以成为 getter 时,它扩展 Element / Elements 原型也不是很好。构造函数将近 100 行......这不是类的编写方式。无论如何,这是由作者决定和维护的......

https://github.com/ceramedia/CeraBox/blob/master/cerabox.js#L134-L143

这部分展示了一个非常 NON-DRY 的元素绑定,没有像this.open.

但是,您可以选择像这样触发事件处理程序:

document.getElement('a.video').fireEvent('click'); // after cerabox init.

一件事:你做$$('a.video').cerabox()- 这是一个集合。您一次只能打开 1 个模态,所以...如果您的意思是它是单个元素绑定,node.getElement(selector)就像在我的示例中一样。

或者,您可以这样做:

var cb = el.retrieve('cerabox'); // some el from $$('a.video')
// gets actual class instance exposed through element storage

if (cb._itemClick(event)) {
    cb.currentItem = cb.collection.indexOf(cb);
    cb.showInline(); // or whatever method is appropriate
}

问题是他依赖于私有函数中元素集合中的索引-因此.indexOf要通过外部穿刺来获得它...玩得开心

于 2013-07-04T21:11:53.993 回答