我遇到了一个问题,已经打了很长时间。
尝试选择该html的<input>
:
$(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;
因此,在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。
没有! : - \。
答案 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;兼容性视图设置。