【问题标题】: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
  • 也许,在他们后来的版本中,他们非常复杂,他们自己修复了选择器。与今天几乎所有浏览器修复损坏的 html 相同:&lt;div&gt; &lt;h1&gt; &lt;/div&gt; 已修复。
  • '使用严格';对结果没有影响。

标签: javascript jquery html google-chrome safari


【解决方案1】:

如果选择器不包含任何 jQuery 扩展,jQuery 将使用浏览器内置的document.querySelectorAll() 函数。 When the selector is invalid, the behavior is unspecified, so it may differ between browsers.一些浏览器试图“修复”选择器并返回一些有用的东西,而其他浏览器则发出错误信号。你不应该依赖这个——编写正确的选择器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多