jQuery로 새로운 요소를 생성하는 기본 방법


227

<div>using을 만들 수있는 두 가지 방법이 있습니다 jQuery.

어느 한 쪽:

var div = $("<div></div>");
$("#box").append(div);

또는:

$("#box").append("<div></div>");

재사용 성 이외의 다른 방법을 사용하면 어떤 단점이 있습니까?


8
재사용 성의 문제 일뿐입니다. 당신의 전화.
Roko C. Buljan

재사용 가능성에 의한 @gdoron 내 말은 : 변수 안에 요소가있는 경우 예제에서와 같이 필요한 곳에서 해당 var를 다시 호출 할 수있는 것보다.
Roko C. Buljan

2
왜 그렇 습니까? .html하지만 .append두 번째 경우는 아닙니다 .
엔지니어 :

@Engineer-죄송합니다. 여기 실수입니다. 나는 그것을 고쳤다.
Ashwin

나는 후자의 방법이 속도 실행 측면에서 더 빠르다고 생각했지만 첫 번째 방법은 (10 % ~ 40 %) 더 빠릅니다. jsperf.com/jquery-append-string-vs-append-jquery-reference
Fabrizio Calderan

답변:


339

첫 번째 옵션은 유연성을 제공합니다.

var $div = $("<div>", {id: "foo", "class": "a"});
$div.click(function(){ /* ... */ });
$("#box").append($div);

물론 그렇지 않은 .html('*')동안 내용을 재정의 .append('*')하지만 이것이 귀하의 질문이 아니라고 생각합니다.

또 다른 좋은 연습으로 jQuery를 변수를 접두어로한다 $:
jQuery를에 변수로 $를 사용하여 뒤에 특정의 이유가 있나요

"class"속성 이름을 따옴표로 묶으면 덜 유연한 브라우저와 더 호환됩니다.


10
또한 $내 의견 으로는 " "로 jQuery 컬렉션 이름을 시작하는 것이 좋습니다 . 그냥 당신이 한 일을 필요로하지 않는 것을주의 $div:$("<div>", {id: 'foo', class: 'a', click: function () {}}).appendTo("#box");
폭발 알약

그 달러 기호가 필요합니까 아니면 오타입니까? $div. 이전에는 그 구문을 보지 못했지만 Jquery를 처음 사용했습니다.
felwithe

나는 항상 변수가 jquery 객체이고 $는 jQuery 컬렉션이면 $ _, 카운터이면 _var을 사용합니다. 정규 변수에 대한 변수입니다.
Casey

1
이 요소 작성 방법에 대한 문서는 어디에 있습니까? $("<div>", {id: "foo", class: "a"});. 다른 옵션이 있는지 알고 싶습니다
Saba Ahang

@gdoron하시기 바랍니다 내 질문을
한번보십시오

74

저는 개인적으로 코드가 실행 가능 코드보다 읽고 편집 가능한 것이 더 중요하다고 생각합니다. 어느 쪽을보다 쉽게 ​​볼 수 있고 위의 요소에 대해 선택해야합니다. 다음과 같이 쓸 수 있습니다.

$('#box').append(
  $('<div/>')
    .attr("id", "newDiv1")
    .addClass("newDiv purple bloated")
    .append("<span/>")
      .text("hello world")
);

그리고 첫 번째 방법은 다음과 같습니다.

// create an element with an object literal, defining properties
var $e = $("<div>", {id: "newDiv1", name: 'test', class: "aClass"});
$e.click(function(){ /* ... */ });
// add the element to the body
$("#box").append($e);

그러나 가독성에 관한 한; jQuery 접근 방식은 내가 가장 좋아하는 방법이다 . 이 유용한 jQuery 요령, 참고 및 모범 사례를 따르십시오


새 HTML 요소 작성에 대한 jQuery 참조에 대한 링크에 감사합니다 . 그래서 구글하기가 어렵습니다.
Bob Stein


25

훨씬 더 표현적인 방식으로

jQuery('<div/>', {
    "id": 'foo',
    "name": 'mainDiv',
    "class": 'wrapper',
    "click": function() {
      jQuery(this).toggleClass("test");
    }}).appendTo('selector');

참조 : 문서


4
class문서에 따르면 따옴표로 묶어야합니다 (위의 문서 링크를 통해). "이름"클래스 "는 JavaScript 예약어이므로 오브젝트에서 따옴표로 묶어야하며"className "은 DOM 특성을 참조하므로 사용할 수 없습니다. 속성이 아닌
Isaac Gregson

5

jQuery 공식 문서 에 따르면

HTML 요소를 만들 $("<div/>")거나 $("<div></div>")선호합니다.

그럼 당신은 사용할 수 있습니다 중 하나 appendTo, append, before, after등 ,. DOM에 새 요소를 삽입합니다.

PS : jQuery 버전 1.11.x


2

3.4 의 문서에 따르면 attr()method 와 함께 속성을 사용하는 것이 좋습니다 .

$('<div></div>').attr(
  {
    id: 'some dynanmic|static id',
    "class": 'some dynanmic|static class'
  }
).click(function() {
  $( "span", this ).addClass( "bar" ); // example from the docs
});

따옴표를 추가했습니다. class따옴표를 넣지 않으면 조용히 실패하여 정신이 나빠질 수 있습니다.
존 헨켈

0

jQuery를 사용하여 실제로 요소를 빌드하는 첫 번째 옵션을 권장합니다. 두 번째 접근 방식은 단순히 요소의 innerHTML 속성을 문자열로 설정합니다.이 문자열은 HTML이며 오류가 발생하기 쉽고 유연성이 떨어집니다.


1
@ 두 번째 접근 방식을 사용하면 수정하려는 컨테이너의 다른 모든 하위 항목을 실수로 지울 수 있습니다. jsfiddle.net/jbabey/RBXq5/1
jbabey

0

#box비어 있으면 아무것도 없지만, 그렇지 않으면 매우 다른 일을합니다. 전자는 div의 마지막 자식 노드로 를 추가 할 것 입니다 #box. 후자는 내용을 #box하나의 빈 div텍스트와 모두로 완전히 바꿉니다 .


아 .. 나는 여기에 append를 사용하지 않는다;)
Ashwin

0

다음과 같은 방법으로 div 요소를 만들 수도 있습니다.

var my_div = document.createElement('div');

수업 추가

my_div.classList.add('col-10');

또한 수행 할 수 있습니다 append()appendChild()

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.