在 jQuery 中创建 div 元素 [duplicate]

Creating a div element in jQuery [duplicate]

提问人:useranon 提问时间:5/15/2009 最后编辑:John Slegersuseranon 更新时间:9/7/2021 访问量:1961424

问:

如何在jQuery中创建元素?div

javascript jquery html 追加 jquery-append

评论

8赞 falsarella 9/10/2014
请参阅:使用 jQuery 创建 HTML 元素的最有效方法是什么?
2赞 Yami Odymel 6/8/2017
$(document.createElement('DIV'))
0赞 Sashi yadav 3/20/2019
$('#parent').append('<div>hello</div>');或 $('<div>hello</div>').appendTo('#parent');
1赞 Eric 2/4/2022
$('#parent').append($('<div>').html('your content'));

答:

8赞 egaga 5/15/2009 #1
<div id="foo"></div>

$('#foo').html('<div></div>');

评论

1赞 Yuriy N. 2/10/2015
如果现有的 div (id=“foo”) 已经包含一些元素,此技术将用新的空 div 替换它们。
69赞 Caius 5/15/2009 #2
$("<div/>").appendTo("div#main");

将附加一个空白的 div 到<div id="main"></div>

83赞 Ish 5/15/2009 #3
div = $("<div>").html("Loading......");
$("body").prepend(div);    
1159赞 cm2 5/15/2009 #4

您可以使用(在父项的最后一个位置添加)或(在父项的第一个位置添加):appendprepend

$('#parent').append('<div>hello</div>');    
// or
$('<div>hello</div>').appendTo('#parent');

或者,您可以使用其他答案中提到的 or。.html().add()

241赞 samjudson 5/15/2009 #5

从技术上讲,它将“创建”一个元素(或更具体地说是 DIV DOM 元素),但不会将其添加到您的 HTML 文档中。然后,您需要将其与其他答案结合使用,以实际使用它做任何有用的事情(例如使用该方法或类似方法)。$('<div></div>')divappend()

操作文档为您提供了有关如何添加新元素的所有各种选项。

2089赞 ian 11/12/2010 #6

从 jQuery 1.4 开始,您可以将属性传递给自闭合元素,如下所示:

jQuery('<div>', {
    id: 'some-id',
    class: 'some-class some-other-class',
    title: 'now this div has a title!'
}).appendTo('#mySelector');

这是在文档中

示例可以在 jQuery 1.4 发布:您必须知道的 15 个新功能中找到。

评论

0赞 MarkSkayff 6/23/2021
很好的答案在这里。
0赞 Antonio Ooi 9/12/2022
此选项看起来更简洁,但由于破折号,似乎不支持该属性,例如 .datadata-something
57赞 Nazmul 1/28/2011 #7

所有这些都对我有用,

HTML 部分:

<div id="targetDIV" style="border: 1px solid Red">
    This text is surrounded by a DIV tag whose id is "targetDIV".
</div>

JavaScript 代码:

//Way 1: appendTo()
<script type="text/javascript">
    $("<div>hello stackoverflow users</div>").appendTo("#targetDIV"); //appendTo: Append at inside bottom
</script>

//Way 2: prependTo()
<script type="text/javascript">
    $("<div>Hello, Stack Overflow users</div>").prependTo("#targetDIV"); //prependTo: Append at inside top
</script>

//Way 3: html()
<script type="text/javascript">
    $("#targetDIV").html("<div>Hello, Stack Overflow users</div>"); //.html(): Clean HTML inside and append
</script>

//Way 4: append()
<script type="text/javascript">
    $("#targetDIV").append("<div>Hello, Stack Overflow users</div>"); //Same as appendTo
</script>
28赞 eomeroff 6/17/2011 #8
document.createElement('div');
208赞 celoron 8/8/2011 #9
d = document.createElement('div');
$(d).addClass(classname)
    .html(text)
    .appendTo($("#myDiv")) //main div
.click(function () {
    $(this).remove();
})
    .hide()
    .slideToggle(300)
    .delay(2500)
    .slideToggle(300)
    .queue(function () {
    $(this).remove();
});
42赞 Ajay 2/3/2012 #10
$("<div/>").attr('id','new').appendTo('body');    

这将在 body 中创建 id 为“new”的新 div。

2赞 Atul 2/16/2012 #11

我认为这是添加div的最佳方式:

要将测试 div 附加到 ID 为 div_id 的 div 元素,请执行以下操作:

$("#div_id").append("div name along with id will come here, for example, test");

现在将 HTML 附加到这个添加的测试 div 中:

$("#test").append("Your HTML");
19赞 Steven Moseley 11/27/2012 #12

这是使用 jQuery 创建 div 的另一种技术。

元素克隆

假设你的页面中有一个现有的div,你想使用jQuery克隆它(例如,在一个表单中多次复制一个输入)。您可以按如下方式执行此操作。

$('#clone_button').click(function() {
  $('#clone_wrapper div:first')
  .clone()
  .append('clone')
  .appendTo($('#clone_wrapper'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="clone_wrapper">
  <div>
    Div
  </div>
</div>

<button id="clone_button">Clone me!</button>

-2赞 ern0 8/16/2013 #13

我刚刚为此制作了一个小的jQuery插件

它遵循您的语法:

var myDiv = $.create("div");

DOM 节点 ID 可以指定为第二个参数:

var secondItem = $.create("div","item2");

严重吗?不。但是这种语法比$(“<div></div>”)更好,而且物有所值。

(答案部分复制自:jQuery document.createElement equivalent?)

评论

2赞 Awena 4/30/2014
jQuery插件只是为了创建Divs,你是认真的吗?
8赞 ern0 5/16/2014
正如我所提到的,没有。
0赞 trincot 1/18/2019
但是这个语法比$(“<div></div>”)更好:你可以做.$("<div>")
0赞 trincot 1/18/2019
有所值:jQuery已经可以免费使用。
5赞 Shruthi Acharya 8/26/2013 #14

您可以使用该方法创建单独的标签。并使用该方法创建子标记。由于jQuery支持链接,因此还可以通过两种方式应用CSS。 要么在类中指定它,要么直接调用:.jquery().append().attr()

var lTag = jQuery("<li/>")
.appendTo(".div_class").html(data.productDisplayName);

var aHref = jQuery('<a/>',{         
}).appendTo(lTag).attr("href", data.mediumImageURL);

jQuery('<img/>',{                                               
}).appendTo(aHref).attr("src", data.mediumImageURL).attr("alt", data.altText);

首先,我将列表标签附加到我的 div 标签中,并在其中插入 JSON 数据。接下来,我正在创建一个列表的子标签,提供了一些属性。我已将该值分配给一个变量,以便我可以轻松附加它。

评论

0赞 Design by Adrian 8/3/2018
“JQuery('<a />', {})” 为什么要提供空对象?
1赞 Vennsoh 9/4/2014 #15

如果它只是一个空的 div,这就足够了:

$("#foo").append("<div>")

$("#foo").append("<div/>")

它给出了相同的结果。

61赞 maxspan 2/25/2015 #16

创建 div 的简短方法是

var customDiv = $("<div/>");

现在,自定义 div 可以附加到任何其他 div。

2赞 Çağdaş Karademir 9/21/2015 #17

我希望这对编码有所帮助。:)(我用)

function generateParameterForm(fieldName, promptText, valueType) {
    //<div class="form-group">
    //<label for="yyy" class="control-label">XXX</label>
    //<input type="text" class="form-control" id="yyy" name="yyy"/>
    //</div>

    // Add new div tag
    var form = $("<div/>").addClass("form-group");

    // Add label for prompt text
    var label = $("<label/>").attr("for", fieldName).addClass("control-label").text(promptText);

    // Add text field
    var input = $("<input/>").attr("type", "text").addClass("form-control").addClass(valueType).attr("id", fieldName).attr("name", fieldName);

    // lbl and inp => form
    $(form).append(label).append(input);

    return $(form);
}

评论

1赞 Deepak Ganachari 9/3/2020
谢谢它帮助:)
0赞 Yasser CHENIK 4/20/2022
有没有一个框架可以以正式/统一的方式做到这一点?
0赞 Tushar Gupta 9/25/2015 #18

您可以使用创建新的 jQuery 对象并添加到目标元素。然后使用链接继续。.add()

例如 jQueryApi

$( "div" ).css( "border", "2px solid red" )
  .add( "p" )
  .css( "background", "yellow" );
 div {
    width: 60px;
    height: 60px;
    margin: 10px;
    float: left;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>

评论

1赞 cssyphus 2/23/2018
对不起,这个答案不正确,应该删除。OP 询问创建新的 DOM 元素。jQuery 方法将现有 DOM 元素添加到现有 jQuery 对象中。您在上面发布的示例(取自 add() 的 jQuery API 页面)将红色边框添加到页面上的 6 个现有 DIV 集合中,然后将页面上的“p”元素添加到集合中,并将所有 7 个背景变为黄色。它不会按照 OP 的要求创建任何新的 DOM 元素。恐怕我必须-1这个答案。建议你删除它。add()
7赞 nst1nctz 3/14/2016 #19

如果你使用的是 Jquery > 1.4,那么 Ian 的答案是最好的选择。否则,我将使用此方法:

这与 celoron 的答案非常相似,但我不知道他们为什么使用而不是 Jquery 表示法。document.createElement

$("body").append(function(){
        return $("<div/>").html("I'm a freshly created div. I also contain some Ps!")
            .attr("id","myDivId")
            .addClass("myDivClass")
            .css("border", "solid")                 
            .append($("<p/>").html("I think, therefore I am."))
            .append($("<p/>").html("The die is cast."))
});

//Some style, for better demonstration if you want to try it out. Don't use this approach for actual design and layout!
$("body").append($("<style/>").html("p{background-color:blue;}div{background-color:yellow;}div>p{color:white;}"));

我还认为在这种情况下使用回调函数更具可读性,因为您现在立即将某些内容附加到正文中。但这是一个品味问题,就像在编写任何代码或文本时一样。append()

通常,在 JQuery 代码中使用尽可能少的 HTML,因为这主要是意大利面条代码。它容易出错且难以维护,因为 HTML-String 很容易包含拼写错误。此外,它将标记语言(HTML)与编程语言(Javascript / Jquery)混合在一起,这通常是一个坏主意。

1赞 Kamuran Sönecek 3/25/2016 #20

$(HTMLelement)可以成功。如果您想要一个 epmty div,请将其用作 .您也可以通过相同的方法设置其他元素。如果要在创建后更改内部 HTML,可以使用 method。对于获取 outerHTML 作为字符串,您可以使用如下:$('<div></div>');html()

var element = $('<div/>');
var innerHTML = element.html(); // if you want set new HTML use it like this element.html('<b>new HTML</b>');
var outerHTML = element[0].outerHTML;
8赞 davidman77 8/31/2016 #21

或者 append() 您还可以使用具有不同语法的 which:appendTo()

$("#foo").append("<div>hello world</div>");
$("<div>hello world</div>").appendTo("#foo");    
9赞 MEAbid 10/14/2016 #22

如果您想创建任何 HTML 标签,您可以尝试此操作 例如

var selectBody = $('body');
var div = $('<div>');
var h1  = $('<h1>');
var p   = $('<p>');

如果你想在 flay 上添加任何元素,你可以试试这个

selectBody.append(div);
22赞 Roko C. Buljan 5/1/2017 #23

创建内存中 DIV

$("<div/>");

添加点击处理程序、样式等 - 最后插入到 DOM 中的目标元素选择器中:

$("<div/>", {

  // PROPERTIES HERE
  
  text: "Click me",
  id: "example",
  "class": "myDiv",      // ('class' is still better in quotes)
  css: {           
    color: "red",
    fontSize: "3em",
    cursor: "pointer"
  },
  on: {
    mouseenter: function() {
      console.log("PLEASE... "+ $(this).text());
    },
    click: function() {
      console.log("Hy! My ID is: "+ this.id);
    }
  },
  append: "<i>!!</i>",
  appendTo: "body"      // Finally, append to any selector
  
}); // << no need to do anything here as we defined the properties internally.
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

类似于 ian 的回答,但我没有发现任何示例可以正确解决属性对象声明方法的使用问题,所以你去吧。

-1赞 Aravind Suresh Thakidayil 5/30/2017 #24

这个怎么样?这里,指的是你希望它里面的元素(成为!:)的子元素。pElementdiv

$("pElement").append("<div></div");

您可以轻松地在字符串中添加更多内容 - 属性、内容,您可以命名它。请注意,对于属性值,您需要使用正确的引号。div