【问题标题】:Javascript/jQuery: Why is the focus event not firing on an input field?Javascript/jQuery:为什么焦点事件没有在输入字段上触发?
【发布时间】:2010-09-16 00:06:54
【问题描述】:

我试图通过.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… 只是把它作为调试的东西,删除它不会使live 侦听器上的focus 工作......

任何帮助将不胜感激。

感谢您的光临。

詹尼斯

【问题讨论】:

    标签: javascript jquery events forms input


    【解决方案1】:

    尝试更改此行:

    $.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();
    });
    

    实时与绑定:

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

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

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

    ... 将someClickEventHandler click 事件处理程序绑定到执行此操作时存在的每个a 标记,并且它还将someClickEventHandler click 事件处理程序绑定到将存在的每个a 事件。例如,如果 a 标记是从 Ajax 响应创建的,则将自动绑定事件处理程序。

    【讨论】:

    • 非常感谢,尽管.live 仍然无法正常工作,但效果非常好。将.live 更改为.bind 使其工作。
    • live() 在传递一个它应该定位的选择器时自动绑定一个事件处理程序,而不是一个特定的对象。查看我的编辑。
    • 感谢 Live vs Bind 添加!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2015-11-02
    • 2021-05-27
    • 2021-08-15
    • 2019-04-10
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多