今天群里問了一個p的問題,初看我覺得恩這么簡單我應該知道。
他代碼如下:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="js/jquery-1.11.0.js"></script> </head> <body> <body> <div> <p><p></p></p> </div> </body> </body> </html> <script> $(function(){ var p = $("p"); alert(p.length); }); </script>
然后輸出了3
我怎么看也是2啊,然后我就讓他把代碼發給我看看,后來別人說p嵌套會有問題,我就試了一下其它標簽 發現i,a ,div都是好的,
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="js/jquery-1.11.0.js"></script> </head> <body> <div> <div>1<div>2</div>3</div> </div> </body> </html> <script> $(function() { var $targetName = $('div'); console.log('i len:',$targetName.length); for(var i=0;i<$targetName.length;i++) { console.log($targetName.eq(i).html()); } }); </script>
然后我突然想起,p里面是不能嵌套塊級的,p自己也是塊級,
例如<p>1<p>2</p>3</p>
他最后會被解析為
<p>1</p>
<p>2</p>
<p</p>
然后我繼續想,如果我把p的style設置為inline呢?
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="js/jquery-1.11.0.js"></script> <style> p { display: inline; } </style> </head> <body> <div> <p>1<p>2</p>3</p> </div> </body> </html> <script> $(function() { var $targetName = $('p'); console.log('p len:',$targetName.length); for(var i=0;i<$targetName.length;i++) { console.log($targetName.eq(i).html()); } }); </script>
恩 還是會輸出3的, 這個應該是和瀏覽器有關系的。
ps:問題雖小,但是我今天才知道,略掉臉,囧。
