我有Cerabox lightbox设置,工作正常。但我很乐意看到它在页面加载时执行而没有访问者点击链接。任何人都有功夫的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&autoplay=1" class="video youtube"><img src="http://thumbnail.jpg" alt="video thumbnail"><div class="btn-play"><p>></p></div></a>
提前致谢!
答案 0 :(得分:1)
不是最好的编写插件作为api,也不是很好,它扩展元素/元素原型,当它可以是一个吸气剂。构造函数接近100行...这是不如何编写类。无论如何,这是由作者决定和维持......
https://github.com/ceramedia/CeraBox/blob/master/cerabox.js#L134-L143
这部分显示了一个非常非连续的元素绑定,没有像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
通过外部穿孔得到它......玩得开心