1

JQueryの$()要素コンストラクターを正しく機能させることができません。以下は正しく機能します(呼び出しにexpect.jsを使用expect()):

var p = $('<div id="1"><div id="2">middle div</div></div>');
expect(p.children('div')).not.to.be(undefined); //passes
expect(p.children('div').attr('id')).to.equal('2'); //passes

しかし、以下は機能しません

var p = $('<p id="1"><div id="2">middle div</div></p>');
expect(p.children('div')).not.to.be(undefined); //passes
expect(p.children('div').attr('id')).to.equal('2'); //fails

これを正しく機能させるためのヒントはありますか?

4

3 に答える 3

3

HTMLマークアップが間違っています。<div>のようなブロックレベルの要素を要素に入れることはできません<p>。そのため、HTMLは実際には(これはブラウザによって異なると思います)、次のように解析される可能性があります。

<p id="1"></p><div id="2">middle div</div>

または(クロムで):

<p id="1"></p><div id="2">middle div</div><p></p>

これは次の方法で簡単に確認できますconsole.log(p);

于 2013-02-28T05:58:15.907 に答える
1

を内部に持つことは無効であるため、<div>は排出されています。<div><p>

于 2013-02-28T05:58:00.380 に答える
1

これを試してみてください:

expect($('#1').find('div').attr('id').to.equal('2');

編集:ニコとシステムは正しいです..しかし、divはapに入れることはできません。

于 2013-02-28T06:02:33.467 に答える