2013-02-28 104 views
1

我無法讓JQuery的$()元素構造函數正常工作。下面的工作權(使用的expect()電話expect.js):

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 

如何得到這個工作的權利任何提示嗎?

回答

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

+0

修好了!謝謝。以下是可以包含以供參考的快速參考:http://risd.generic.cx/containment.html – 2013-02-28 06:11:23

1

<div>正被彈出,因爲<p>內部無效<div>

1
容易驗證這一點

你應該試試這個:

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

編輯:尼科和系統是正確的..一個div CA儘管如此,我們並不在意。