如何停止执行某个函数,只在mootools中单击执行

时间:2014-04-03 10:44:42

标签: html mootools

我是Mootools的新手,我发现我必须使用点击元素,但我不能100%确定我的意思是将它放在下面的代码中:

function setInStockOption (labels, e) {
    active = false;
    labels.some (function (item,index) {
        if(item.hasClass ('selected')) {
            if(item.hasClass ('unavailable')) {
                item.removeClass('selected');
                item.addClass ('unselected');
                active = true;
            } else {
                return true;
            }
        }
        if(active) {
            if (!item.hasClass ('unavailable')) {
                e.target = this;
                item.fireEvent ('click', e);
                active = false;
                return true;
            }
        }
    });
}

window.addEvent('load', function(e) {
    var labels = $$('div.option-radios label.radio');

    setInStockOption(labels, e);
});

我基本上需要添加在点击时选择的类。目前,此脚本将所选类添加到html中Radio的第一个子节点,然后当您单击其他节点时,它将添加所选的类。我基本上希望在页面加载时取消选择所有类 。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你会想要这样的东西:

window.addEvent('domready', function(e) {
    $$('div.option-radios label.radio').each(function(label, i) {
        label.addEvent('click', function(event) {
            event.target.toggleClass('selected');
        });
    });
});

请注意,这使用Array.each方法而不是Array.some。后者并没有做到你所期望的。然后,它会在每个标签上注册一个click事件,只需切换事件目标上的selected类。

然后,您可以向each循环添加其他初始化代码,并为click事件处理程序添加更多逻辑。

我还使用domready事件,该事件通常比it fires earlier load优先于{{1}}。

Here's a fiddle来玩。