代码之家  ›  专栏  ›  技术社区  ›  ultrarun

jquery append/prepend不在边缘中工作?

  •  0
  • ultrarun  · 技术社区  · 6 年前

    这段代码获取th(.table dates)的内容,并将其移动到下面td(.table times)中的一个范围(.date span)。

    它适用于除旧版本的Edge以外的所有产品,最新版本实际上很好。有人知道为什么会这样吗?我的研究成果很少。跨度仍然是空的!

    $(".table-dates").each(function(i,e) {
        var elem = $("<span/>").append($(e).html());
        $("table").find(".table-times .date-span")[i].prepend(elem.html());
    });
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   T.J. Crowder    6 年前

    您(可能是无意中)依赖于具有 prepend 方法,因为您正在从 find 具有 [i] 然后打电话 预置 关于这一点:

    $("table").find(".table-times .date-span")[i].prepend(elem.html());
    // Here ----------------------------------^^^^^^^^^^^
    

    像这样索引到jquery对象中会提供该索引处的原始元素(而不是jquery对象)。您应该在控制台中得到一个关于 预置 当它失败的时候就不是一个函数。

    这个 prepend method ParentNode interface 是相当新的。显然早期版本的Edge不支持它。

    使用jQuery 预置 相反,使用 eq(i) 而不是 [I] :

    $("table").find(".table-times .date-span").eq(i).prepend(elem.html());
    // ----------------------------------------^^^^^