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

jquery等价于javascript createElement的问题

  •  0
  • Will  · 技术社区  · 15 年前

    我正在尝试用jquery重新创建以下代码:

            var node = document.createElement("div");
            node.innerHTML = "DynaColumn";
            node.className = "ui-state-default ui-corner-all";
    
            return node;
    

    这就是我想用的代码:

    return $("<div class='ui-state-default ui-corner-all'>DynaColumn</div>");
    

    第一个似乎工作得很好。我不知道为什么第二个不起作用:

    将使用此返回值的对象将按如下方式调用它:

    something.appendChild(theNode);
    
    4 回复  |  直到 15 年前
        1
  •  3
  •   bobince    15 年前

    appendChild 是一个dom方法,因此需要给定一个dom节点,而不是jquery包装器(由返回 $(...) 以及大多数其他jquery方法)。

    从仅包含一个元素的jQuery包装器中获取包装节点的快速方法:

    return $('<div class="ui-state-default ui-corner-all">DynaColumn</div>')[0];
    
        2
  •  1
  •   womp    15 年前

    记住,jquery对象是围绕dom对象的包装器。要从jquery对象中获取dom对象,请使用get()函数。

    return $('<div class="ui-state-default ui-corner-all">DynaColumn</div>').get(0);
    
        3
  •  1
  •   Sean    15 年前

    如果 something 是一个空的DOM元素,那么您需要:

    something.appendChild(theNode[0]);
    

    如果 某物 是jquery对象,则需要:

    something.append(theNode);
    
        4
  •  0
  •   hunter    15 年前
    var $div = $(document.createElement("div"));
    $div.html("DynaColumn");
    $div.addClass("ui-state-default").addClass("ui-corner-all");
    return $div; // or $(something).append($div);