【问题标题】:Reference an accordion instance in Mootools在 Mootools 中引用手风琴实例
【发布时间】:2014-02-12 16:21:16
【问题描述】:

我正在使用 CMS (Joomla 3) 来展示手风琴。除了默认功能之外,我希望在手风琴的每个窗格上放置一个按钮以进入下一个窗格。通常这会在手风琴初始化时完成,但 Joomla 只是这样做

window.addEvent('domready', function() {
new Fx.Accordion($$('div#cf_container_0.pane-sliders > .panel > h3.pane-toggler'), etc...});

因此没有参考添加按钮事件,如Mootools accordion with a Next button inside each pane中所见

有什么方法可以通过编程方式找到手风琴并将点击事件添加到每个按钮?我不想更改核心 Joomla 功能,以防它在未来的更新中被覆盖,因此这需要从创建手风琴时独立。

非常感谢

【问题讨论】:

    标签: events mootools accordion


    【解决方案1】:

    有可能,是的。会有点hacky。大多数现代的 mootools 类都会将对其应用的元素的引用保存到元素存储中。手风琴没有。您可以通过重载默认初始化(构造方法)来解决这个问题,如下所示:

    (function(){
    // before the other code runs, after mootools-more is loaded.
    var old = Fx.Accordion.prototype.initialize;
    Fx.Accordion.prototype.initialize = function(){
        old.apply(this, arguments);
        var self = this;
        this.elements.each(function(element){
            element.store('accordion', self);
        });
    };
    }());
    
    // now your domready code can make the accordions after the changes.   
    
    // now to get to the instance:
    var a = document.getElement('div#cf_container_0.pane-sliders > .panel > h3.pane-toggler').retrieve('accordion');
    a.display.getNext(); // etc - whatever you can call from instance
    

    没有测试过,但你明白了 - 应该可以正常工作。

    【讨论】:

    • 还没有机会测试这个,但我明白这个原理。谢谢迪米塔尔。
    猜你喜欢
    • 2011-05-30
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    相关资源
    最近更新 更多