【问题标题】:jQuery 'has attribute' selector fails in IE7 (for 'autofocus')jQuery '具有属性' 选择器在 IE7 中失败(对于'自动对焦')
【发布时间】:2012-12-04 13:33:26
【问题描述】:

我正在尝试为不支持 autofocus 属性的浏览器提供支持,使用类似这样的方法:

<input type="text" autofocus/>
<input type="text" autofocus="autofocus"/>
<input type="text"/>​

<script type="text/javascript">
    $("input[autofocus]").first().focus();
</script>

但是,该选择器会返回 IE7 的所有输入元素,包括那些没有“自动对焦”属性的元素。它适用于 IE8+,我已经使用 jQuery 1.6.4、1.7.2 和 1.8.2 进行了测试。我这里有一个 jsfiddle:http://jsfiddle.net/HSC7K/4/

这些 jQuery 票似乎相关,但已关闭:

http://bugs.jquery.com/ticket/5637

http://bugs.jquery.com/ticket/7874

编辑: 更新jsfiddle:http://jsfiddle.net/HSC7K/6/

【问题讨论】:

  • 如果您使用的是 HTML5,则需要包含一个 shiv 以允许自动对焦等元素。你做到了吗?
  • 我使用的是自定义属性,而不是 HTML5 元素,所以 AFAIK 它不需要 shiv。我更新了小提琴以显示自定义属性正在工作,但如果该属性被称为“自动对焦”,它就不起作用。
  • 自定义属性在 XHTML 中无效 - 您的文档类型是什么? stackoverflow.com/questions/2413147/… 自动对焦是 HTML5 中的新功能
  • 我正在使用 HTML5 文档类型 - 。 stackoverflow.com/questions/2412947/…。诚然,IE
  • 你试过这样的吗? $('[autofocus]:not(:focus)').eq(0).focus();

标签: jquery html jquery-selectors


【解决方案1】:

我在 AJAX 调用后尝试自动对焦时遇到了同样的问题。

$("input[autofocus]").first().focus();

只是不起作用。我正在使用 IE 11。 我发现如果你删除它的输入选择器。所以....

$("[autofocus]").first().focus();

【讨论】:

    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多