почему этот код javascript переходит в код jQuery? appendChild конфликт? - PullRequest
0 голосов
/ 02 июля 2010

Я буду использовать 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 ]

3 голосов
/ 02 июля 2010
>>> var UL = document.createElement('ul').id = 'meta-ul';
>>> UL
"meta-ul"
2 голосов
/ 02 июля 2010
// 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 голосов
/ 02 июля 2010

Ваш UL - это не элемент элемента jQuery, а собственный элемент JavaScript.Вам нужно получить UL с jQuery's $(UL), чтобы использовать специфичные для jQuery методы.

...