Javascript/jQuery : Why is the focus event not firing on an input field?

标签 javascript jquery events forms input

我正在尝试通过 .live() jQuery 方法将一个简单的焦点/模糊事件监听器附加到我的输入,但我注意到的是 focus 事件未触发,而 blur 事件触发。

奇怪……希望您知道为什么会这样。

代码如下:

function rowHighlight() {
  var form = $('form.register'),
      ele = {};

      form.find('label').each(function(i) {
        var link = this.htmlFor;
        form.find('label[for='+link+'],input[name='+link+'],textarea[name='+link+']').wrapAll('<span class="row"/>');
      });

      ele.row = $('form > .row');
      ele.inputs = ele.row.find('input');


      $.each(ele.inputs, function(i) {
          $(this).focus(function() {
              console.log('hello'); // this will fire.
          });
        $(this).live('focus blur', function(e) {
            console.log('current event type: '+e.type); // the focus on this will not fire!?
            ( e.type=='focus' ? console.log('focussed') : console.log('blurred') )
        });
      });    
}
rowHighlight();

$(this).focus... 只是把它作为一个调试的东西,删除它不会使 focuslive 上听众工作……

如有任何帮助,我们将不胜感激。

感谢您的光临。

詹尼斯

最佳答案

尝试改变这一行:

$.each(ele.inputs, function(i) {

到这一行:

ele.inputs.each(function() {

解释:

jQuery 中的each() 有两种形式。

遍历映射或数组:

$.each([1,2,3], function(index, value){

});

或者,当遍历 jQuery 对象时:

$("a").each(function(){

});

http://api.jquery.com/jQuery.each/

$(this) 表示您仅在第二次使用时才期望的内容:

$("a").each(function(){
    $(this).remove();
});

实时与绑定(bind):

$("a").click(someClickEventHandler);

... 将 someClickEventHandler 单击事件处理程序绑定(bind)到执行此操作时存在的每个 a 标记。

$("a").live("click", someClickEventHandler);

... 将 someClickEventHandler 单击事件处理程序绑定(bind)到执行此操作时存在的每个 a 标记,并且还将绑定(bind) someClickEventHandler 单击事件处理程序以处理将永远存在的每个 a 事件。例如,如果 a 标记是从 Ajax 响应创建的,事件处理程序将自动绑定(bind)。

关于Javascript/jQuery : Why is the focus event not firing on an input field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722783/

相关文章:

jquery - 使用 Jquery 将多个 DOM 元素附加到一个事件处理程序的最短方法?

javascript - 为什么 knockout 绑定(bind)传递的是span元素的id而不是anchor元素的id?

javascript - Backbone.js 没有在模型更改时发布到服务器?为什么?

javascript - 简化语法,如何避免重复 "if"?

c# - 在 C# 中使用 Lambda 的一次性事件

c++ - 在事件的主循环中获取 X11 窗口

javascript - 我应该把这个条件放在哪里?

javascript - 使用 Tab 键在对话框元素内循环在 Safari 和 Chrome 中不起作用

c# - JQuery 对话框未从 C# 打开

javascript - 在变量JS中使用onclick ="myFunction()"