2010,正心,修身,养性。
焚我残躯,毁我意志,复我记忆。
子曰:“知之者不如好之者,好之者不如乐之者。”
子曰:“吾尝终日不食,终夜不寝,以思,无益,不如学也。”

快乐的生活,快乐的分享。

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;
        }

应该是比较好理解,如果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');
                    }
                };
            }

        }()

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

标签: ,

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

2 条评论

  • 小马 (2009.03.28 @ 22:01)

    下次周二周三去,半价!

  • 南芝 (2009.03.29 @ 16:47)

    @小马 这倒不错哈~

雁过留声

Rss
渴望孩子的纯真、诚实、可爱、无忧无虑。。。。。。

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