【问题标题】:Detect :first-child support检测:第一子女抚养费
【发布时间】:2011-06-24 03:03:00
【问题描述】:

如何使用 JavaScript 检测浏览器是否支持 CSS :first-child 选择器?

【问题讨论】:

  • 需要检测它吗? :) 几乎所有当前的东西都支持它:quirksmode.org/css/contents.html#t17
  • ...检查jQuery版本是否为≥1.1.4? :p
  • @Kenny, @Pekka - jQuery 支持它,浏览器 支持它(作为 CSS 选择器)是两个不同的东西......
  • @Pekka - jQuery 在标签中,但他在问题中询问浏览器是否支持它......我认为这充其量是一个有问题的假设。
  • 我添加了 [css-selectors] 标签。

标签: javascript jquery css css-selectors


【解决方案1】:

您可以使用:first-child 规则设置一些特定值,然后在Javascript 中获取计算样式以查看是否应用了:first-child 规则,例如

<style>
#foo { width: 200px; }
#foo:first-child { width: 400px; }
</style>

<span><span id="foo"></span></span>

<script>
if ($('#foo').width() < 400)
   alert('first-child not supported.');
</script>

(这个没有测试。我没有IE 6。)

【讨论】:

  • 这是对问题的一个很好的准确答案,+1。虽然我感觉必须首先找出这一点的基本前提是错误的设计决策的结果。
  • @WorkingHard: 什么额外的块?
  • @WorkingHard 你在说什么?
  • @WorkingHard 为真。但我不认为你会绕过引入这样的元素(尽管你应该能够设置 display: none 所以它是隐藏的)。不过,对我来说,基本问题仍然是:你为什么需要这个?
【解决方案2】:

我认为没有 jQuery 函数可以找到对此的支持。我预计如果它确实存在,那将是相当复杂的。你真的确定你需要这个吗?愿意分享为什么?

如果你仍然可以使用 jQuery,为什么不添加一个 jQuery 语句来将类/属性/whatever 分配给所需的元素,而不是依赖 CSS?

作为“手动”答案,查看quirksmode.org compatibility table,所有现代浏览器都完全支持选择器,除了 IE 系列,即使在 IE8 中似乎也存在问题。

【讨论】:

  • 我找到了这个页面api.jquery.com/jQuery.support但不知道如何使用它
  • @WorkingHard:jQuery.support 无法测试:first-child 支持。
  • @WorkingHard 我会先问自己为什么我首先需要这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-09
相关资源
最近更新 更多