【问题标题】:jQuery: array function stops after first itemjQuery:数组函数在第一项后停止
【发布时间】:2013-12-08 17:45:27
【问题描述】:

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

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

这里有什么问题或遗漏?

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");
}

【问题讨论】:

    标签: jquery select dynamic


    【解决方案1】:

    如果您遇到此类问题,请确保下次也在那里进行一些调试。例如,打印“arr”数组中的元素数量会指出问题是只抓取了一项。

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

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

    该 jquery 网站是编写网站时的绝佳资源。

    【讨论】:

    • 非常感谢 - 这非常有用!
    【解决方案2】:

    你只得到一个值,因为你只要求第一个匹配的td元素

    您的选择器是:

    "td:first"
    

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

    "td:first-child" 
    

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

    【讨论】:

      【解决方案3】:

      该选择器可能只匹配一个元素,即第一个 TD,而您确实在寻找 first-child 选择器:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-22
        • 2011-08-14
        • 1970-01-01
        • 2015-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多