我才12 ?

YAHOO.util.Dom.batch

就在刚刚,带着梦想,我去了影院,结果还是晚了一步。。。其实我有两个目标,一个是《东邪西毒》终极版,一个是《贫民窟的百万富翁》,然而到了影院我发现《东邪西毒》的票价竟然是100元。。。远远超过了我的心里承受能力,所以我放弃了,另一个《贫民窟的百万富翁》票价是50元,还能接受,可是已经在19点05分上映了。。我去的时间已经晚了十几分钟,而下一场的时间是20点25分,我想了想,等看完了,就太晚了,所以我毅然决定返回,只听嗖的一声,我飞了回来。继续YUI。。。

YUI的Dom方法中的batch促成了大多数其他Dom方法的el可以使用数组,功劳不小哦~现在来看看batch方法:

batch: function(el, method, o, overrides) {
            var collection = [],
                scope = (overrides) ? o : window;

        el = (el && (el[TAG_NAME] || el.item)) ? el : Y.Dom.get(el); // skip get() when possible
        if (el && method) {
            if (el[TAG_NAME] || el.length === undefined) { // element or not array-like 
                return method.call(scope, el, o);
            } 

            for (var i = 0; i < el.length; ++i) {
                collection[collection.length] = method.call(scope, el[i], o);
            }
        } else {
            YAHOO.log('batch called with invalid arguments', 'warn', 'Dom');
            return false;
        } 
        return collection;
    }</pre>

应该是比较好理解,如果el是id或者单节点的话,就直接返回,如果是数组的话就循环一下,最后输出数组。

可能但看这个不是很好理解,那么看个例子吧:

setStyle: function(el, property, val) {
            Y.Dom.batch(el, Y.Dom._setStyle, { prop: property, val: val });
        },

    _setStyle: function() {
        if (isIE) {
            return function(el, args) {
                var property = Y.Dom._toCamel(args.prop),
                    val = args.val;

                if (el) {
                    switch (property) {
                        case 'opacity':
                            if ( lang.isString(el.style.filter) ) { // in case not appended
                                el.style.filter = 'alpha(opacity=' + val * 100 + ')';

                                if (!el[CURRENT_STYLE] || !el[CURRENT_STYLE].hasLayout) {
                                    el.style.zoom = 1; // when no layout or cant tell
                                }
                            }
                            break;
                        case 'float':
                            property = 'styleFloat';
                        default:
                        el.style[property] = val;
                    }
                } else {
                    YAHOO.log('element ' + el + ' is undefined', 'error', 'Dom');
                }
            };
        } else {
            return function(el, args) {
                var property = Y.Dom._toCamel(args.prop),
                    val = args.val;
                if (el) {
                    if (property == 'float') {
                        property = 'cssFloat';
                    }
                    el.style[property] = val;
                } else {
                    YAHOO.log('element ' + el + ' is undefined', 'error', 'Dom');
                }
            };
        }

    }()</pre>

我们可以看到setStyle里使用了Y.Dom.batch(el, Y.Dom._setStyle, { prop: property, val: val });,很容易理解吧哈。。。也不晓得该怎么解释。。就这样吧哈。。

标签: ,

这篇文章发布于 2009年03月28日,星期六,20:37,归类于 编码。 您可以跟踪这篇文章的评论通过 RSS 2.0 feed。 您可以留下评论,或者从您的站点trackback

2 条评论

雁过留声

这位姐姐,你好,你的浏览器版本太低了,为了避免您中毒,请您升级您的浏览器!