jquery - 为什么 $ (":select").focus 不起作用,而 $ (":input").focus 起作用?

标签 jquery select focus

我有一个 JQuery 代码,当输入或选择元素获得焦点时它会执行某些操作。 虽然我的输入元素代码有效,但选择元素不起作用。

这就是我所做的。

<body>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">


$(document).ready(function(){
   $(":input").focus(function () { //this works
    //do something
   });

   $(":select").focus(function () { //this doesn't
    //do something      
   });
});

</script>
</body>

我尝试了一些 select 的变体,例如使用 $("select") 而不是 $(":select"), 但也没有用。

我是 JQuery 的初学者。

如果您能告诉我如何让它发挥作用,我将不胜感激。

非常感谢!

最佳答案

简短:因为:select不存在。

$('select') will work ,但前提是您有 <select>代码中的元素。你上面的代码中没有。

看看 list of selectors .

:input instead does exist :

Selects all input, textarea, select and button elements.

<小时/>

一般情况下:以冒号 : 开头的选择器是伪选择器。它们由 jQuery 定义(它们不是有效的 CSS 选择器)并选择具有特定状态或属性的元素。

您已经遇到过:input 。它选择所有表单控制元素。另一种是例如 : visible ,它选择所有显示的(可见)元素。

<小时/>

更新:

<select>$('select').focus(... 时元素必须存在被执行。我不知道您正在使用的软件,但如果它们加载元素,例如通过 Ajax,那么当您的代码执行时它们很可能还不存在。

  1. 确保有 <select>页面上的元素。
  2. 您可能需要使用 .live() :

    $('select').live('focus', function() {
        //stuff
    });
    

关于jquery - 为什么 $ (":select").focus 不起作用,而 $ (":input").focus 起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5000692/

相关文章:

jquery - 在 Safari 中防止 event.click 触发 event.mousemove

jquery - 将验证错误返回到 MVC 3 中的 jQuery 对话框

jquery - 底部 float div(如 Facebook 消息中)

javascript - 如何去除 Javascript (json) 中的斜杠?任何 JQuery 插件?

jquery - 使用 jquery 设置 select 的第一个选项值

java - 将焦点放在 JLayeredPane 中的 JPanel

javascript - 将焦点保持在表格的一列中

javascript - 如何使用 jquery 获取嵌入对象内的选定文本?

mysql - 从 4 个不同的表中按日期排序

qt - 防止控件窃取键盘焦点