2012-08-13 2 views
0

안녕에 JQuery와 개체를 복사 할 수 없습니다 :이 작동하지 않는 이유를 이해가 안다음을 수행하여 내가 다른 내부 JQuery와 개체를 삽입하려고 JQuery와 객체

var htmlCode = $("<div id='"+data.layoutDescriptions[i].id+"'></div");   
if(data.contentRef == "RecursiveContactSubForm"){ 
     if(htmlArray[2]){ 
      alert("in here"); 
     htmlCode.append(htmlArray[2]); 
     } 
     else{ 
      alert("in here2"); 
      var tmp = htmlCode; 
      htmlCode.append(tmp); 
     } 
    } 

.

어떤 아이디어가 있습니까?

감사합니다.

+3

@Pekka "콘텐츠 DOM 요소, HTML 문자열, ** 또는 jQuery를 객체가 **에 삽입 :-)하는 데 도움이 일치하는 요소 세트의 각 요소의 끝. " –

+0

@Anthony oops! 아마 나는 읽는 법을 배워야한다. –

+0

jQuery API는'append'가 jQuery 객체를 받아 들일 수 있다고 말합니다. –

답변

2

나는 당신의 오류가 있으리라 믿고있어이 여기에 있습니다 : htmlCode의 복사본을 생성하지 않습니다

var tmp = htmlCode; 
htmlCode.append(tmp); 

이 할당은, 그것에 대한 새로운 기준을 만들 것입니다. tmphtmlCode은 동일한 개체를 나타내므로 개체 자체에 추가하려고하면 실패합니다.

var tmp = htmlCode.clone(true); 
htmlCode.append(tmp); 

뿐만 아니라 새 개체에 개체에 연결된 이벤트와 데이터를 복사합니다 trueclone에 전달 :

당신은 clone 기능을 사용할 수 있습니다.

1

시도 :

var tmp = htmlCode[0].outerHTML; 
htmlCode.append(tmp); 

이 (I 희망) 귀하의 질문에 대답을하지만, 특히, 당신이 정말로해야 컨테이너와 동일한 ID를 가진 요소를 밀고, 몇 가지 문제를 해결하지 않습니다 피해야합니다.

1

글쎄, 당신이 할 수있는 가능한 것들 (코드 로직이 좋은 것 때문에) : 이것은 당신이 기대하는 경우

(1) 확인하기 위해 반환 값을 확인.

console.log(htmlCode); 
console.log(data.contentRef); 
console.log(htmlArray[2]); 
console.log(tmp); 

(2) 브라우저 콘솔을 확인하고 오류의 또 다른 종류의를 찾을 (어쩌면 당신은 다른 자바 스크립트 코드에 구문 오류가 있습니다).

(3) 가능한 오류가 tmp 변수 부분의 할당에있을 수있는 올바른 방법은 clone()을 사용하고 있습니다 :

var tmp = htmlCode.clone(true); 

그냥 알고, 코드의 아이디어가 작동 잘, 당신은 다음을 테스트 할 수 있는지 :

예 :

라이브 데모 :http://jsfiddle.net/FYC7L/

var htmlArray = new Array("<div id='newElement_1'>Element 1</div>", "<div id='newElement_2'>Element 2</div>", "<div id='newElement_3'>Element 3</div>"); 

var htmlCode = $("<div id='test'>Test</div>");   

if(htmlArray[2]){ 
    htmlCode.append(htmlArray[2]); 
} 

console.log(htmlCode); 

이가 작동 볼 수 있습니다, 그래서 tmp와 아마 내 게시물의 첫 부분에 썼다 또는 귀하의 값을 반환 뭔가가 (아마도 잘못)이로 변하기 쉬운.

위 예제의 출력 :

enter image description here

희망이