2015-12-09 20 views
2

我遇到了一個問題,已經很長一段時間了。<section>上的JQuery bug?

嘗試選擇HTML的<input>的:

$(document).ready(function() { 
 
    var markup = $('section fieldset input').length; 
 
    alert(markup); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
 
<section class="buttonDiv"> 
 
    <fieldset> 
 
    <legend>General Information</legend> 
 
    <input type="submit" class="submit" name="btnUser" value="Users Activity" id="btnUser" /> 
 
    <input type="submit" class="submit" name="btnLast50Activities" value="Last 50 Activities" id="btnLast50Activities" /> 
 
    <input type="submit" class="submit" name="btnCounts" value="Data Element Count" id="btnCounts" /> 
 
    <input type="submit" class="submit" name="btnSilConfigurations" value="SIL Configuration" id="btnSilConfigurations" /> 
 
    <input type="submit" class="submit" name="btnApiMsg" value="Listener Connections" id="btnApiMsg" /> 
 
    <input type="submit" class="submit" name="btnLisConn" value="Application IDs" id="btnLisConn" /> 
 
    </fieldset> 
 
</section> 
 

 
<section class="buttonDiv"> 
 
    <fieldset> 
 
    <legend style="color: blue; font-weight: bold;">Settings</legend> 
 
    <input type="submit" class="submit" name="SILApi" value="SIL MQ Settings" id="btnSilSettings" /> 
 
    <input type="submit" class="submit" name="ABatchRunner" value="Batch MQ Settings" id="btnBatchMqSettings" /> 
 
    <input type="submit" class="submit" name="btnEnvSettings" value="Environment Settings" id="btnEnvSettings" /> 
 
    </fieldset> 
 
</section>

所以在Chrome中,它返回9只是因爲它應該,但在Internet Explorer中運行的時候,雖然它的老它返回0。 我不明白爲什麼! Explorer 9假設支持它。

P.S. - 當從jQuery選擇中移除($('fieldset input'))時,它會返回一個好結果,但我想知道該部分爲什麼會將其混淆。

AND - 如果我使用alert($('section').length我得到2這是很好的,如果我使用 alert($('fieldset input').length我得到9這是很好的,但使用所有這三個 alert($('section fieldset input').length我得到0時。 無! : - \。

+1

我剛剛在IE9上試過,它工作正常。你確定你沒有使用比IE9更低的東西嗎? – shennan

+0

[鏈接] http://snag.gy/tcyZX.jpg是的,我想你的答案肯定是一些本地的問題..我只是無法弄清楚什麼..我會盡力去處理它一點點.. 非常感謝 ! –

+0

http://snag.gy/ib5Y8.jpg –

回答

1

按照建議關掉IE9的「兼容模式」,你可以嘗試通過提供<meta>標籤(必須是第一個meta標籤)的<head>內做到這一點的文件中:

<html> 
    <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
    <title>My Web Page</title> 
</head> 

可以肯定,雖然,你的實際IE9設置沒有被設置爲強制compatibility view通過工具>兼容性視圖設置打開。

+0

太棒了!非常感謝..沒有人真的應該使用IE :),它只是一些用戶的默認瀏覽器.. –

4

IE 8及更低版本需要先創建每個新的HTML5元素(document.createElement('section')),然後才能理解如何處理它們。有一個叫HTML5Shiv項目,會如果包括他們的供應JS到你的站點的所有HTML5元素爲你做這個:

<!--[if lt IE 9]> 
    <script src="javascripts/html5shiv/dist/html5shiv.js"></script> 
<![endif]--> 

(假設你已經上傳到你的網站在JavaScript的目錄)。

+1

OP建議它在IE9上失敗... – shennan

+0

好點。我不知道任何理由選擇'部分'會在IE9中失敗。 OP,你能詳細說明一下嗎? –

+0

我的猜測是OP的描述有點鬆散。剛剛啓動了一臺帶有IE9的虛擬機,測試了代碼並且工作正常。 – shennan

1

這是IE舊版本中的一個錯誤,它將所有無法識別的標籤都做爲空標籤。

意味着IE,解析您的DOM作爲

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<section class="buttonDiv" /> 
      <fieldset> 
       <legend>General Information</legend> 
       <input type="submit" class="submit" name="btnUser" value="Users Activity" id="btnUser" /> 
       <input type="submit" class="submit" name="btnLast50Activities" value="Last 50 Activities" id="btnLast50Activities" /> 
       <input type="submit" class="submit" name="btnCounts" value="Data Element Count" id="btnCounts" /> 
       <input type="submit" class="submit" name="btnSilConfigurations" value="SIL Configuration" id="btnSilConfigurations" /> 
       <input type="submit" class="submit" name="btnApiMsg" value="Listener Connections" id="btnApiMsg" /> 
       <input type="submit" class="submit" name="btnLisConn" value="Application IDs" id="btnLisConn" /> 
      </fieldset> 
<!--ignored   <section></section> --> 

     <section class="buttonDiv" /> 
      <fieldset> 
       <legend style="color: blue; font-weight: bold;">Settings</legend> 
       <input type="submit" class="submit" name="SILApi" value="SIL MQ Settings" id="btnSilSettings" /> 
       <input type="submit" class="submit" name="ABatchRunner" value="Batch MQ Settings" id="btnBatchMqSettings" /> 
       <input type="submit" class="submit" name="btnEnvSettings" value="Environment Settings" id="btnEnvSettings" /> 
      </fieldset> 
<!--ignored   <section></section> --> 

要與錯誤解決。

在DOM解析嘗試第一次解析它之前,您需要在<head></head>中做document.createElement(「section」)。