jQuery:数组函数在第一个项目后停止

时间:2013-11-23 22:26:49

标签: jquery select dynamic

我想使用以下函数创建一个包含列的唯一值的下拉列表。

该函数创建下拉列表,但仅显示列的第一个值,而不是该列中的所有唯一值。

有人可以告诉我这里有什么问题或遗漏吗?

function createDropdownFromColumn() {
    var arr = [];
    $("td:first").each(function() {
        if ($.inArray($(this).text(), arr) == -1)
            arr.push($(this).text());
    });

    // create select
    var select = $("<select />");
    for (var i = 0; i < arr.length; i++) {
        $("<option>" + arr[i] + "</option>").appendTo(select);
    }

    // append select
    select.appendTo("body");
}

非常感谢你提供任何帮助,蒂姆。

3 个答案:

答案 0 :(得分:2)

该选择器可能只匹配一个元素,第一个TD,你真的在​​寻找first-child选择器:

$("td:first-child").each(function() {...

答案 1 :(得分:1)

您只获得一个值,因为您只需要第一个匹配的td元素

您的选择器是:

"td:first"

根据the documentation,仅检索第一个匹配的元素。如果您希望所有td元素都是其各自tr元素的第一个子元素,那么您的选择器将只是:

"td:first-child" 

有关详细信息,请参阅:first-child上的文档。

答案 2 :(得分:1)

如果你遇到这样的问题,请确保下次再调试一下。例如,打印“arr”数组中的元素数量会指出问题是只抓取了一个项目。

这会让你回到你的选择器是问题,然后检查: http://api.jquery.com/category/selectors/

“:first”描述为:“选择第一个匹配的元素。”

在编写网站时,jquery网站是一个了不起的资源。