kissygalleryteam/datalazyload — pull request #10 by sehuo (2014-01-27 09:12:33+00:00)
Title: container支持数据选择器+HTMLCollection，解决1.2模式下第一个节点是隐藏节点场景下bug

问题演示见 http://jsfiddle.net/stu2006/VtFs7/7/

** 有三个问题 **

一、1.4.x下DOM.query返回是HTMLCollection对象,1.2兼容模式永不会启动，如例子中的a1,a2

// 兼容 1.2 传入数组，进入兼容模式，不检测 container 区域
if (S.isArray(userConfig.container)) {
//
}
二、container支持选择器string，当是container：“.xx” 就有问题了，仅支持第一个.xx，见例子中c1,c2

container: {
setter: function (el) {
...
el = DOM.get(el); //<- 这
...
return el;
},
...
}

三、在低于1.4.x版本中，1.2兼容模式下，当第一个元素是隐藏元素时，之后的非隐藏元素也都不加载，见例子b1,b2

container: {
setter: function (el) {
...
el = DOM.get(el);
...
return el;
},
...
}
// 由于setter中DOM.get导致container其实是第一个元素，第一个若是隐藏。。 return
if (self._containerIsNotDocument && !container.offsetWidth) {
return;
}

** 思路 **

1. 组件删除1.2兼容代码，组件就是不支持数组,由调用方控制节点类型，这种太不友好，不选
1. 兼容1.2+兼容1.4.xquery+支持.xxx
* 先尝试了增加isHTMLCollection方法，对kissy版本作兼容，发现非常啰嗦，还要考虑kissy库的升级
* 最终改用，更简洁的方式，container初始值改DOM.query
1. 1.2模式改用length判断实现对Array和HTMLCollection的兼容
1. _loadItem方法增加对数组/伪数组的遍历操作
1. demo中用到的场景在1.3.2/1.4.1下自测通过