首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery事件绑定以选择focusin/out

Jquery事件绑定以选择focusin/out
EN

Stack Overflow用户
提问于 2012-10-09 22:58:06
回答 3查看 8K关注 0票数 0

jquery绑定到select元素时存在这个问题。当我单击select时,应该添加.focus类。但是从下拉列表中选择一个选项会破坏逻辑。

==> JSFIDDLE

步骤:

  1. 单击select
  2. 选择一个选项
  3. 单击select -> .focus未添加

代码:

代码语言:javascript
复制
<a>
   <select>
      <option>A</option>
      <option>B</option>
      <option>C</option>
   </select>
</a>​

$('select').focusin(function(){
    $(this).parent('a').addClass('focus');
});
$('select').bind('focusout change',function(){
    $(this).parent('a').removeClass('focus');
});​
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-09 23:17:09

问题的根源在于,只在select集中时添加类,然后在select值更改时删除该类。类从未被添加回的原因是当您选择它的一个选项时,select从未失去焦点。像这样的事情应该会让你有你想要的行为:

代码语言:javascript
复制
$('select').click(function(){
   $(this).parent('a').toggleClass('focus'); 
});

$('select').blur(function() {
   $(this).parent('a').removeClass('focus'); 
});

编辑--我猜您希望在选择选项时保留删除类的功能,这就是为什么我要绑定单击而不是焦点和模糊。

票数 2
EN

Stack Overflow用户

发布于 2012-10-09 23:11:08

这是因为选择该选项将焦点从select元素中移除,就像从select中选择一个选项一样。

所以select上的一个focusout正在这里发生。因此,这显然删除了select父元素上的类。

另外,没有添加类,因为这里的select已经有了焦点。

因此,可以使用.blur().focus()事件。

检查演示

票数 0
EN

Stack Overflow用户

发布于 2012-10-09 23:11:59

我相信你在找这样的东西,但我可能错了:

代码语言:javascript
复制
$('select').on("focus", function(){
    $(this).parent('a').addClass('focus');
});
$('select').on('blur',function(){
    $(this).parent('a').removeClass('focus');
});​

使用on绑定事件,并为您的复选框使用focusblur事件。如果我正确理解了这个问题,这应该能解决你的问题。

示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12809607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档