<section>上的JQuery错误?

时间:2015-12-09 15:38:52

标签: javascript jquery html

我遇到了一个问题,已经打了很长时间。

尝试选择该html的<input>

&#13;
&#13;
$(document).ready(function () {
  var markup = $('section fieldset input').length;
  alert(markup);
});
&#13;
<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>
&#13;
&#13;
&#13;

因此,在Chrome中,它会返回9,但在Internet Explorer上运行时,虽然它已经过时,但它返回0。 我不明白为什么!资源管理器9假设支持它。

P.S。 - 当从jQuery选择中移除部分($('fieldset input'))时,它会返回一个好的结果,但我想知道该部分为什么会混淆它。

AND - 如果我使用alert($('section').length我得到2这是好的,如果我使用 alert($('fieldset input').length我得到9这是好的,但是当使用这三个时 alert($('section fieldset input').length我得到0。 没有! : - \。

4 个答案:

答案 0 :(得分:4)

IE 8及更低版本需要先创建每个新的HTML5元素(document.createElement('section'))才能理解如何处理它们。有一个名为HTML5Shiv的项目,如果您将所提供的JS包含在您的网站中,它将为您为所有HTML5元素执行此操作:

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

(假设您已将其上传到javascripts目录中的站点)。

答案 1 :(得分: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(&#34; section&#34;)。

答案 2 :(得分:1)

来自https://msdn.microsoft.com/en-us/library/gg593059(v=vs.85).aspx

  

部分元素仅支持IE9中显示的网页   标准模式。

要在IE9中启用标准模式,请确保将此行放在文件顶部:

<!doctype html>

答案 3 :(得分:1)

根据关闭IE9&#39;兼容模式&#39;的建议,您可以通过提供<meta>标记尝试在文档中执行此操作(必须是第一个元标记)<head>

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

请确保您的实际IE9设置尚未设置为强制compatibility view启用,通过工具&gt;兼容性视图设置。