为啥 jQuery 选择器适用于 Chrome,但不适用于 Safari?
Posted
技术标签:
【中文标题】为啥 jQuery 选择器适用于 Chrome,但不适用于 Safari?【英文标题】:Why jQuery selector works on Chrome but not on Safari?为什么 jQuery 选择器适用于 Chrome,但不适用于 Safari? 【发布时间】:2018-03-11 20:36:42 【问题描述】:我有以下代码:
var l = $("input[name*=hello").length;
$('#result').text(l);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input name="hello" type="text">
</div>
<div>
<input name="hello" type="text">
</div>
<div id="result">
</div>
jQuery 选择器在哪里:
input[name*=hello
检查选择器没有正确写入input[name*=hello
,因为缺少]
。
在 Chrome 上,我可以在 div[id=result] 上看到我输入的名称为“hello”(2) 的数量。
但在 Safari 上,我在控制台上收到错误:
哪个是正确的,所以问题是:为什么 Chrome 会“自动更正”选择器?是否可以消除这种行为?
【问题讨论】:
这也适用于 Firefox,即使是document.querySelectorAll
。
developer.mozilla.org/en-US/docs/Web/javascript/Reference/…
也许,在他们后来的版本中,他们非常复杂,他们自己修复了选择器。与今天几乎所有浏览器修复损坏的 html 相同:<div> <h1> </div>
已修复。
'使用严格';对结果没有影响。
【参考方案1】:
如果选择器不包含任何 jQuery 扩展,jQuery 将使用浏览器内置的document.querySelectorAll()
函数。 When the selector is invalid, the behavior is unspecified, so it may differ between browsers.一些浏览器试图“修复”选择器并返回一些有用的东西,而其他浏览器则发出错误信号。你不应该依赖这个——编写正确的选择器。
【讨论】:
以上是关于为啥 jQuery 选择器适用于 Chrome,但不适用于 Safari?的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个 CSS 不适用于 Android 上的 Chrome,但适用于其他任何地方?
Jquery $.Post 适用于 Firefox 但不适用于 Chrome
此 JS/jQuery 代码适用于 Firefox,但不适用于 Chrome
为啥 jQuery UI 的日期选择器会与动态 DOM 发生冲突?