所以基本上这是我的脚本:

http://jsfiddle.net/JJFap/42/

代码-

jQuery(document).ready(function() {
    var rel = new Array();
    var count = 0;
    jQuery(".setting").each(function() {
        rel[count] = [];
        if(jQuery("span").attr("rel")) {
            rel[count].push(jQuery("span").attr("rel"));
        }
        console.log(count);
        count++;
    });
    jQuery("body").text(rel);
    console.log(rel);
});​


<div class="setting">
    <span rel="Variable">Variable</span>
    <span rel="Item">Item</span>
    <span rel="Something">Something</span>
</div>
<div>
    <span rel="Smth">Smth</span>
    <span>Sec</span>
</div>
<div class="setting">
    <span>Second</span>
    <span rel="first">First</span>
    <span rel="Third">Third</span>
</div>

我的问题是为什么它显示变量,变量?

我希望它显示Variable,First,但是我做不到。

基本上,我要实现的是创建一个新数组,在其中插入每个带有rel属性数组的div.setting span元素。

所以基本上在这个例子中它应该输出-
Array (

   Array[0] => "Variable","Item","Something";

   Array[1] => "first","Third";

)

希望你理解我的意思:)

编辑:

在我的另一个示例中,我尝试在每个函数的第一个内部添加jQuery(“span”)。each(function()...,但它输出了两个完整的数组,包含所有rel的span元素。我不能有不同的类/ id对于每个div元素,因为所有元素都将具有相同的类。

最佳答案

除了已经说过的内容,使用count时还可以摆脱push()和一个jQuery.fn.map(),以及在向选择器中添加if时摆脱[rel]:

jQuery(document).ready(function() {
    var rel = [];
    jQuery(".setting").each(function() {
        rel.push(jQuery(this).find('span[rel]').map(function() {
            return this.getAttribute('rel');
        }).get());
    });
    jQuery("body").text(rel);
    console.log(rel);
});

10-05 20:52
查看更多