新手问题 关于 KISSY 的一个问题

xiongxin8802 · 2014年05月24日 · 最后由 xiongxin8802 回复于 2014年05月25日 · 1980 次阅读

S.all("#playlist li")是所有项的集合,当前有一个触发事件的元素S.one(ev.target),我怎么能获取到该触发事件的元素在集合的索引位置呢?

自己定一下,我不知道去哪里提问。。

没有用过 Kissy,不知道选择器结果是真数组还是类数组(看起来像数组,比如说有 length,但是缺少很多数组方法。DOM 集合都是这样的类数组)。

如果是真数组,那么使用 indexOf 方法可以获得索引位置;如果是类数组,那么先用 Array.prototype.slice.call 转一下,再 indexOf 即可。


var results = [].slice.call(S.all("#playlist li"));

var index = S.one(ev.target).indexOf(results);

应该能行,用 Vanilla JS + DOM 测试过。


嗯,看了一下 MDN,其实可以一句搞定:

[].indexOf.call(S.all("#playlist li"), S.one(ev.target));

不是只有阿里人才用 kissy 的吗?

#2 楼 @nightire 是伪数组。。。这个 indexOf 我看文档上有的,也是针对真数组操作的。

#4 楼 @xiongxin8802 对呀,所以用原型的 slice 转一下就可以当真数组用了呗。

#5 楼 @nightire

var results = [].slice.call(S.all("#playlist li"));
var _index = S.indexOf(ev.target,results);

谢谢你了,昨天没细看,不好意思啊,已经成功了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号