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 との競合ですか?

4

3 に答える 3

3
>>> var UL = document.createElement('ul').id = 'meta-ul';
>>> UL
"meta-ul"
于 2010-07-02T14:50:24.087 に答える
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 と競合することはありません。

于 2010-07-02T14:50:12.980 に答える
-1

あなたULは jQuery 要素オブジェクトではなく、単なるネイティブ JavaScript 要素です。jQuery 固有のメソッドを使用するには、 ULwith jQueryを取得する必要があります。$(UL)

于 2010-07-02T14:50:31.137 に答える