2010-07-02 5 views
0

나는이 코드 덩어리 (jQuery로 재 작성) 아래에 일부 jQuery를 사용할 것이다. jQuery가로드됩니다. 하지만 디버거에서이 코드를 단계별로 실행할 때 디버거가 표시된 줄의 jQuery로 점프하는 이유와 "UL.appendChild"가 함수가 아닌 이유를 이해할 수 없습니다.왜이 자바 스크립트 코드가 jQuery 코드로 이동합니까? appendChild 충돌?

var Dialog = document.createElement('div').id='meta-dialog'; 
var Tabs = document.createElement('div').id = 'meta-tabs';   
var UL = document.createElement('ul').id = 'meta-ul'; 


var li1 =document.createElement('li'); li1.id = 'term1-LI'; 
var li2 =document.createElement('li'); li2.id = 'term2-LI'; 

var li1a = document.createElement('a'); 
var li2a = document.createElement('a'); 

li1a.href='#meta-tab1'; li1a.innerHTML = 'term1'; 
li2a.href='#meta-tab2'; li2a.innerHTML = 'term2'; 

li1.appendChild(li1a); 
li2.appendChild(li2a); 

UL.appendChild(li1) ; // Firebug debugger jumps into jQuery here 
UL.appendChild(li2); 

누구에게나 명백한 문제입니까? 이것은 jQuery와 충돌이 있습니까?

답변

2
// Here UL will be the id attribute, not the <ul> element. 
var UL = document.createElement('ul').id = 'meta-ul'; 

// this doesn't makes sense... (id.appendChild) 
UL.appendChild(li1) ; 

// solution: 
var UL = document.createElement('ul'); 
UL.id = 'meta-ul'; 

대화 상자와 탭에서도 마찬가지입니다. (li1과 li2는 괜찮습니다)

오, 그리고 $로 시작하는 것을 사용하지 않는 한 jQuery와 충돌 할 수 없습니다.

+0

답장을 보내 주셔서 감사합니다. 때로는 코드에서 오랫동안 눈이 멀어 보였습니다. 심지어 가장 단순한 슬립 업 (slip-ups)조차도 저에게 뛰어 오르지 않았습니다. – Tim

+0

np :) 모든 사람에게 발생합니다. 좀 쉬어야합니다. ;) – galambalazs

3
>>> var UL = document.createElement('ul').id = 'meta-ul'; 
>>> UL 
"meta-ul" 
-1

귀하의 UL은 기본 JavaScript 요소 일뿐입니다. jQuery 특정 메소드를 사용하려면 UL을 jQuery의 $(UL)으로 가져와야합니다.

+0

나는 downvote를하지 않았지만 "UL"변수가 실제로 어떤 종류의 요소 참조가 아니기 때문에 그렇게했을 것이다. – Pointy

+0

@Pointy 누가했는지 추측해라, 나의 옛 친구 :) 대답은 너무 짧았지만, 너무 틀렸고 나는 설명을 남겨 두지 않았다. – galambalazs

관련 문제