在下面的“.input”中与标签匹配。
代码在所有浏览器中都能正常工作,除了在Internet Explorer中,我需要两次单击选择框才能获得下拉列表。
$(".input").focus(function () {
var rc = $(this).parents(".rc-input");
rc.removeClass("rc-input-default");
rc.addClass("rc-input-active");
});
如果我使用mousedown而不是焦点它可以工作,但是在Tab键时我没有达到预期的效果?
<div class="rc-input">
<select class="input">
...
</select>
</div>
答案 0 :(得分:3)
这是IE中的一个错误。当您对版本8之前的IE中的选择框进行任何更改(包括通过更改类名更改间接样式)时,它会重新创建基础Windows下拉窗口小部件,其副作用是将其重置为关闭状态。
在IE6-7上,作为解决方法,您可以使用onfocusin
代替onfocus
;因为这在选择聚焦之前发生,重新定位不会关闭控件。或者只使用简单的CSS :focus
规则而不是改变类,并让IE6-7用户放弃输入突出显示。 (他们不配得上这些美女!)
请参阅this answer,了解结合这些方法的示例代码。
答案 1 :(得分:2)
来自jQuery文档:
焦点事件不会在Internet Explorer中冒泡。因此,依赖于焦点事件的事件委派的脚本将无法在浏览器中一致地工作。
答案 2 :(得分:0)
你可以同时处理mousedown和focus。