为什么这段 javascript 代码会跳转到 jQuery 代码中?附加子冲突?

发布于 2024-09-07 14:50:33 字数 835 浏览 9 评论 0原文

我将在这段代码下面使用一些 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 冲突吗?

I will be using some jQuery below this chunk of code (which I may rewrite as jQuery). jQuery is loaded. But I don't understand why, when I step through this code in the debugger, the debugger jumps into jQuery on the line indicated, and I am get the error that "UL.appendChild" is not a function.

 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);

Is the problem apparent to anyone? Is this a conflict with jQuery?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

伴随着你 2024-09-14 14:50:33
>>> var UL = document.createElement('ul').id = 'meta-ul';
>>> UL
"meta-ul"
>>> var UL = document.createElement('ul').id = 'meta-ul';
>>> UL
"meta-ul"
守望孤独 2024-09-14 14:50:33
// 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 冲突。

// 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';

And the same goes for Dialog and Tabs. (your li1 and li2 are fine)

Oh, and as long as you're not using anything starting with $, you cannot conflict with jQuery.

秋心╮凉 2024-09-14 14:50:33

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

Your UL is not a jQuery element object, just a native JavaScript element. You will need to obtain the UL with jQuery's $(UL) in order to use jQuery specific methods.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文