为什么这个javascript代码会跳转到jQuery代码? appendChild冲突?

时间:2010-07-02 14:46:38

标签: jquery conflict appendchild

我将在这段代码下面使用一些jQuery(我可以将其重写为jQuery)。 jQuery已加载。但我不明白为什么,当我在调试器中单步执行此代码时,调试器会跳转到指示行上的jQuery,并且我收到“UL.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有冲突吗?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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';

Dialog和Tabs也是如此。 (你的li1和li2很好)

哦,只要你没有使用以$开头的任何内容,你就不能与jQuery冲突。

答案 2 :(得分:-1)

您的UL不是jQuery元素对象,只是本机JavaScript元素。您需要使用jQuery的UL获取$(UL)才能使用特定于jQuery的方法。