【问题标题】:Jquery - find / each triggered twiceJquery - 查找/每个触发两次
【发布时间】:2020-01-15 07:17:01
【问题描述】:

我有以下代码:

var jqxhr = $.get(url, function(downloadedPage) {
     //alert("success");
})

.done(function(downloadedPage) {
        var newRows = $(downloadedPage).find("table.articles tbody");
        var rowsToAdd = [];

        alert (newRows.html().split("<tr>").length); // gives 733
        $("BODY").after("<code>" + escapeHtml(newRows.html()) + "</code>"); // prints a list of <tr></tr> : 733 lines

        newRows.find("tr").each(function(index) {
            alert(index); // goes up to 1464
            var row = $(this);

            rowsToAdd.push("<tr>" + row.html() + "</tr>");
        });

        alert(rowsToAdd.length); // gives 1464

我不明白为什么这段代码在 rowsToAdd 中插入了两倍的行数...为什么使用 733 行的容器,它会“接近”两倍的行数(733 vs 1464)。

如果我替换第一个电话:

$(downloadedPage).find("table.articles tbody");

$(downloadedPage).find("table.articles:first tbody");

那么问题就解决了。

谁能解释一下那里出了什么问题?

【问题讨论】:

  • 同时添加一些 html。您可能有 2 个元素与您的 html 上的“table.articles tbody”选择器匹配
  • @MKougiouris 好的,就是这样,但即使这样,我也不明白为什么使用 733 行容器,它会“接近”两倍的行数(733 对 1464) .
  • 好吧...也添加 html。我们正在做你知道的编程,而不是黑魔法 :P 我想这可能只是一些换行符人工制品,不看任何东西就很难分辨。我会在评论中回答,我真的很喜欢我的一些代表,就像下一个人一样:D

标签: jquery find iteration each


【解决方案1】:

您的选择器选择了更多元素。 如果:first 解决了您的问题,则意味着在没有它的情况下必须选择更多元素,因此选择错误。

由于容器上的差异,您可以添加您的 html 或对其进行修改,以便我们更好地检查它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2013-01-22
    • 2011-10-01
    • 1970-01-01
    相关资源
    最近更新 更多