使用jQuery检测浏览器的CSS选择器支持

通常,我使用Modernizr进行常规特征检测,但它无法检测浏览器选择器支持(即:nth-​​of-type()选择器)。 有没有办法用jQuery检测浏览器的选择器支持?     
已邀请:
你是对的,即使在CSS中不支持该选择器的浏览器中,选择带有jQuery选择器的元素也是可行的。 但是,您可以使用CSS3选择器应用样式,然后使用jQuery选择一个元素以确定是否已应用该样式。 例如在CSS中:
#myid > p {
  display: none;
}
然后在jQuery中:
if ( $( '#myid > p' ).css('display') != 'none' ) {
 // blah
}
但要小心,因为
.css()
可能不会返回您的期望。例如,如果您应用“红色”之类的颜色,它将返回
rgb(255, 0, 0)
。 对不起我知道这不像Modernizr那样完美,但我希望它可以帮助你处理你的情况。     
您可以尝试使用该选择器选择一些内容,如果它返回'NULL',浏览器不支持它,或者没有该类型的元素 我的建议是在你知道存在的东西上使用选择器。     
你不应该需要jQuery - 常规的JavaScript会让你很好:
function supportsSelector(selector){
  if(selector.indexOf(":") !== 0) {
    selector = ':'+selector;
  }
  try {
    var queryString = "body" + selector + ",body:not(" + selector + ")";
    return !!document.querySelector("body" + selector + ",body:not(" + selector + ")");
  } catch (e) {
    return false;
  }
}

console.log(supportsSelector("hover"));
console.log(supportsSelector(":hover"));
console.log(supportsSelector(":focus-within"));
console.log(supportsSelector("I made this up"));
console.log(supportsSelector(":not(.a, .b)"));

要回复问题请先登录注册