小智 1962

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

jQuery('<div/>', {
    id: 'some-id',
    "class": 'some-class',
    title: 'now this div has a title!'
}).appendTo('#mySelector');
Run Code Online (Sandbox Code Playgroud)

这是在Docs中

例子可以在jQuery 1.4发布:你必须知道的15个新功能.

  • @knowncitizen,但这也与全部内联编写相同.例如`$('<div id ="foo"class ="bar"> text </ div>').appendTo('body');`等 (17认同)
  • 这是一个很好的解决方案,非常理想,因为您可以在进行侵入式DOM修改之前为其提供一些属性. (10认同)
  • 您可以在http://api.jquery.com/jQuery/#jQuery2的文档中阅读相关内容(**的最后一段*) (8认同)
  • 我希望这在ie7 + 8中有效:/ / (8认同)
  • 如果你想生成与动态生成的DIV苍蝇一类的名字,你可能需要把单引号括起来类,为了让事情在IE7中工作,而IE8 - 例如"类":"我 - 类 - 名称' (8认同)
  • 旁注:上面的代码实际上没有输出有效的html,因为`href`没有在`<div>`上定义.(试图纠正这个例子,但是他们拒绝了.) (4认同)
  • 似乎HTML5认为"自闭标签"与标签相同,`<div />`不是HTML5的批准方法,你必须使用`<div> </ div>` .[或者至少有人这么说](http://stackoverflow.com/a/22314982/211160).鉴于赞成票数量很高,确保正确的答案在这里可能会很好!我想问题是jQuery是否会有自己的规则与基础HTML5 ... (4认同)
  • 通过将属性用引号括起来来避免上述情况,单引号或双引号.''class':'myClass' (3认同)
  • 如果我还想创建带变量的子元素,该怎么办?例如,同时创建子<a>标签和父div,以及<a>标签的text = var内容. (2认同)
  • @TheSmose你有意和我说话吗? (2认同)
  • 这个解决方案的好处是,如果你有一个元素的许多属性,这些属性是由一堆函数和变量生成的,你不必担心转出单ping和双ping,它增加了代码的可读性. (2认同)

小智 1045

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

$('#parent').append('<div>hello</div>');    
// or
$('<div>hello</div>').appendTo('#parent');
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用不同答案中提到的.html()或..add()

  • 不不不!这个例子(以及关于下面引用的整个毫无意义的讨论)说明了*不*做什么.jQuery提供属性访问器和text()函数是有原因的:这是因为它们负责正确引用和转义属性和文本.只需使用它们,**总是**.@ ian的回答在这方面要好得多. (70认同)
  • @Ricki - 不,对所有属性使用双引号.单引号不会产生有效的XHTML,尽管大多数浏览器都会容忍它. (26认同)
  • 不会id需要单引号而不是双引号吗?所以id ="bar"将是id ='bar',否则你正在关闭它. (13认同)
  • @halfer反之亦然,在javascript中使用单引号用于选择器和任何带双引号的附加html. (10认同)
  • @halfer就我所知,这是一个完整的神话(尽管是一个流行的神话),并且属性的单引号实际上在HTML,XML和XHTML中完全有效.请参阅http://stackoverflow.com/questions/2210430/are-single-quotes-valid-in-html-xhtml (9认同)
  • 是的,我明白你的意思 - 好点!@Xeoncross的小编辑?:) (5认同)

sam*_*son 228

从技术上讲,$('<div></div>')将"创建"一个div元素(或更具体地说是一个DIV DOM元素),但不会将其添加到HTML文档中.然后,您需要将其与其他答案结合使用,以实际执行任何有用的操作(例如使用append()方法等).

操作文档提供了关于如何添加新元素的所有各种选择.

  • 使用.attr()方法. (8认同)

小智 194

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();
});
Run Code Online (Sandbox Code Playgroud)

  • 不,它没有 - 它甚至不使用jQuery来实际创建元素.这可能是一个答案,但这不是这个问题的答案,"我如何在jQuery中创建div元素?" 这不是使用jQuery创建div,而是使用标准JavaScript创建的DIV.这个答案会抛出其他内容,例如点击处理程序,混合中的动画.ian上面的回答是正确的,尽管选择的那个在技术上也是正确的.这个应该被拒绝投票完全偏离主题. (30认同)
  • @JRM为什么这比伊恩的回答更好? (4认同)
  • 这是更好的,对不起最好的答案,因为它解释了一切,而且一目了然,一目了然也可以理解.:d (2认同)

Ish*_*Ish 79

div = $("<div>").html("Loading......");
$("body").prepend(div);    
Run Code Online (Sandbox Code Playgroud)


小智 65

$("<div/>").appendTo("div#main");
Run Code Online (Sandbox Code Playgroud)

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


max*_*pan 57

创建div的一个简短方法是

var customDiv = $("<div/>");
Run Code Online (Sandbox Code Playgroud)

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


Hoq*_*que 55

所有这些对我有用,

HTML部分:

<div id="targetDIV" style="border: 1px solid Red">
    This text is surrounded by a DIV tag whose id is "targetDIV".
</div>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


小智 38

$("<div/>").attr('id','new').appendTo('body');    
Run Code Online (Sandbox Code Playgroud)

这将创建一个id为"new"的新div到body中.


eom*_*off 27

document.createElement('div');
Run Code Online (Sandbox Code Playgroud)

  • 字面意思:$(document.createElement('div')); (38认同)
  • 问题是"如何在jQuery中创建div元素**?" (22认同)

Ste*_*ley 19

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

元素克隆

假设您在页面中有一个想要使用jQuery克隆的div(例如,在表单中多次复制输入).你会这样做.

$('#clone_button').click(function() {
  $('#clone_wrapper div:first')
  .clone()
  .append('clone')
  .appendTo($('#clone_wrapper'));
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)


Rok*_*jan 15

创建内存中的DIV

$("<div/>");
Run Code Online (Sandbox Code Playgroud)

添加单击处理程序,样式等 - 最后将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.
Run Code Online (Sandbox Code Playgroud)
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

类似伊恩的答案,但我没有发现任何例如,妥善解决了使用方法对象的属性声明,所以你去.


MEA*_*bid 9

只是如果你想创建任何HTML标签,你可以尝试这样做

var selectBody = $('body');
var div = $('<div>');
var h1  = $('<h1>');
var p   = $('<p>');
Run Code Online (Sandbox Code Playgroud)

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

selectBody.append(div);
Run Code Online (Sandbox Code Playgroud)


ega*_*aga 8

<div id="foo"></div>

$('#foo').html('<div></div>');
Run Code Online (Sandbox Code Playgroud)


nst*_*ctz 7

如果您使用的是Jquery> 1.4,那么您最好使用 Ian的答案.否则,我会使用这个方法:

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

$("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;}"));
Run Code Online (Sandbox Code Playgroud)

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

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


dav*_*n77 6

除了append()之外,您还可以使用appendTo()具有不同语法的语法:

$("#foo").append("<div>hello world</div>");
$("<div>hello world</div>").appendTo("#foo");    
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用该.jquery()方法创建单独的标签。并使用该.append()方法创建子标签。由于 jQuery 支持链接,您还可以通过两种方式应用 CSS。要么在类中指定它,要么直接调用.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);
Run Code Online (Sandbox Code Playgroud)

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


归档时间:

查看次数:

1672192 次

最近记录:

6 年,3 月 前