1

我正在使用Zepto.js,一个轻量级的 jquery 克隆。但是该框架不像 jquery 那样使用 .data() 。现在我需要使用这段代码:

var position = new Array;
$('#ipadmenu > section').each(function() {
    position.push($(this).data('order'));
});

但我不知道如何在我的框架上进行这项工作。我如何将其转换为纯 javascript?我从来没有真正使用过数组,所以我很迷茫......另外,我可能跳过了 zepto 文档(https://github.com/madrobby/zepto)中可以帮助我的东西吗?.get() 例如?

这是HTML代码。基本上我想将所有部分(数量可以改变)添加到数组中:

<nav id="ipadmenu">
    <section data-order="0">
        <a><p>text</p></a>
    </section>
    <section data-order="1">
        <a><p>text</p></a>
    </section>
</nav>

谢谢您的帮助!

4

4 回答 4

4

根据我对 zepto 文档的 30 秒审查,它看起来像这样。

var position = new Array;
$('#ipadmenu > section').each(function() {
    position.push($(this).data('order'));
});

您链接到的 zepto 文档说它支持您的代码段中的所有 jquery 方法。

它不处理的数据怎么办?如果它真的不能处理data同样的问题,它也支持attr,所以你可以说:

var position = new Array;
$('#ipadmenu > section').each(function() {
    position.push($(this).attr('data-order'));
});
于 2011-10-21T20:55:38.677 回答
1

这里有一个替代的“纯”javascript解决方案:

var position = [];
var aSections = document.getElementById('ipadmenu').childNodes;
for (iIndex in aSections) {
    if (aSections[iIndex].nodeName == 'SECTION') {
        position.push(aSections[iIndex].getAttribute('data-order'));
    }
}

另请参阅我的jsfiddle

=== 更新 ===

一个小一点的解决方案:

var position = [];
var aSections = document.getElementById('ipadmenu').getElementsByTagName('SECTION');
for (i = 0; i < aSections.length; i++) {
    position.push(aSections[i].getAttribute('data-order'));
}

这里是新的jsfiddle

于 2011-10-21T21:03:10.873 回答
0

如果您正在使用 data-* 属性,那么您可以通过HTMLElement 中可用的新数据集对象访问它们。dataset 是一个 StringMap 对象,因此您可以使用驼峰式属性名称作为键来访问这些值。如果数据集不可用(如果浏览器不兼容 HTML5 或浏览器中未实现数据集规范),那么您可以使用常规属性检索方法访问该属性。

所以,如果你有:

<script type="text/javascript">
var dataSet = document.getElementById("input1").dataset;
for(var key in dataSet) {
    console.log("attribute is: " + key);
    console.log(dataSet[key]);
}
</script>
<input type="text" id="input1" data-custom-attribute="some value"/>
于 2012-04-02T23:24:14.460 回答
0

当您使用带有“数据”模块的 Zepto 自定义构建时,Zepto 支持 $(elem).data("attr-name") 方法。因此,您可以对 jquery 和 Zepto 使用相同的代码

于 2015-10-15T10:16:21.383 回答